webForumDet fria alternativet
Logga in / Bli medlem

vad innebär UNIQUE?

Databaser & SQL

1 svar · 283 visningar · startad av orvar

Medlem sedan feb. 2001105 inlägg
Trådstart#1

Jag använder Oracle, ska skapa en tabell och gör då så här:

CREATE TABLE test(
abc integer,
def integer UNIQUE,
ghi integer,
PRIMARY KEY (abc, def)
);

Vad innebär egentligen UNIQUE? Hur påverkar det tabellen?

Anledningen till att jag frågar är att när jag skulle skapa 4 tabeller med lite referenser mellan varandra så fick jag följande felmeddelande på en "FOREIGN KEY"-rad i en tabell som refererade till "def": "No matching unique or primary key for this column-list".

Tycker det verkar konstigt då "def" väl faktiskt är en primary key i och med "PRIMARY KEY (abc, def)"... eller?

Felmeddelandet försvann iallefall när jag lade till UNIQUE.

Tack, orvar

Medlem sedan dec. 200012 464 inlägg
#2

Unique innbär att du inte kan ha duplikat i de kolumner som ingår i unique.

När du definierar en foreign key så måste det finns en primary key eller unique som innehåller exakt lika många kolumner som det finns i din foreign key. Kolumnerna måste också vara jämförbara.

Generellt så tycker jag att det tyder på en lite skev datamodell om du vill ha en foreign key till enbart en av kolumnerna i din primärnyckel.

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