trubbel med nycklar

Databaser & SQL

4 svar · 209 visningar · startad av Nöff

Medlem sedan nov. 2003569 inlägg
Trådstart#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å?

266 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)