webForumDet fria alternativet

trubbel med nycklar

4 svar · 194 visningar · startad av Nöff

NöffMedlem sedan nov. 2003569 inlägg
#1

CREATE TABLE grupper (
ID int IDENTITY(1,1) UNIQUE NOT NULL,
index int NOT NULL,
namn char(250),
PRIMARY KEY(ID, index));

CREATE TABLE produkt (
ID int IDENTITY(1,1) UNIQUE NOT NULL,
gruppindex int NOT NULL,
uppgift char(255),
PRIMARY KEY(ID),
FOREIGN KEY(gruppindex) REFERENCES grupper (index));

Jag får detta fel :(
There are no primary or candidate keys in the referenced table 'grupper' that match the referencing column list in the foreign key produkt.gruppindex

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Du kan inte referera en del av de kolumner som finns i primärnyckel/unique när du skapar en foreign key. Alla måste ingå. Man skapar en foreign till en nyckel och inte till enskilda kolumner.

NöffMedlem sedan nov. 2003569 inlägg
#3

CREATE TABLE grupper (
ID int IDENTITY(1,1) UNIQUE NOT NULL,
index int NOT NULL,
namn char(250),
PRIMARY KEY(index));

CREATE TABLE produkt (
ID int IDENTITY(1,1) UNIQUE NOT NULL,
gruppindex int NOT NULL,
uppgift char(255),
PRIMARY KEY(ID),
FOREIGN KEY(gruppindex) REFERENCES grupper (index));

så om jag sätter "grupper.index" som primärnyckel endast och inte bägge två, och grupper.ID får ticka på för sig själv utan att var nyckel, eller då kanske grupper.ID inte alls behövs eller nåt?. Kan man ta bort den då?.

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Jo, den defnitionen är ok.

Kan man ta bort den då?.

Ja, om du menar punkten efter ? så skall den bort.

Jag förstår nog inte vad du menar, i vilket fall så är det onödigt med både unique och primary key på samma kolumn?

NöffMedlem sedan nov. 2003569 inlägg
#5

hehe jepp. Så då kan jag ta bort "grupper.ID" helt då?

138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)