webForumDet fria alternativet

trubbel med nycklar

Databaser & SQL

4 svar · 194 visningar · startad av Nöff

Medlem sedan nov. 2003569 inlägg
Frågan#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

Medlem 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.

Medlem 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å?.

Medlem 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?

Medlem sedan nov. 2003569 inlägg
#5

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

261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)