Problem:
Du vil oprette en primær nøgle til en tabel i en database.
Eksempel:
Vi ønsker en primær nøgle til en tabel kaldet product
.
Løsning 1 (ny tabel):
CREATE TABLE product ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL, price DECIMAL(7,2) );
Diskussion:
For at oprette en ny tabel med en kolonne defineret som den primære nøgle, kan du bruge nøgleordet PRIMARY KEY
i slutningen af definitionen af denne kolonne. I vores eksempel opretter vi tabellen product
ved hjælp af en CREATE TABLE
klausul, med navnene på kolonnerne og deres respektive datatyper i parentes. Vi vælger kolonne-id'et som den primære nøgle i denne tabel, så vi udpeger PRIMARY KEY
i slutningen af definitionen af denne kolonne.
Husk, at du kun kan oprette én primær nøgle til en given tabel.
Løsning 2 (ny tabel):
CREATE TABLE product ( name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL), price DECIMAL(7,2), PRIMARY KEY(name, producer) );
Diskussion:
En anden måde at definere en primær nøgle under oprettelsen af en ny tabel er med en PRIMARY KEY
klausul i slutningen af kolonnedefinitionerne. I dette tilfælde angiver vi en eller flere kolonner som et argument til PRIMARY KEY
klausul; disse kolonner bliver den primære nøgle til tabellen.
Bemærk, at denne tilgang tillader primære nøgler bygget med flere kolonner. I dette eksempel er den primære nøgle for tabellen product
er dannet af to kolonner:name
og producer
.
Løsning 3 (eksisterende tabel):
ALTER TABLE product ADD PRIMARY KEY (id);
Diskussion:
Det er også muligt at definere en primærnøgle for en eksisterende tabel, som endnu ikke har en primærnøgle.
Her er tabellen ændret ved hjælp af en ALTER TABLE
klausul. Tabellen (i vores eksempel, product
) er opkaldt efter søgeordet ALTER TABLE
, derefter ADD PRIMARY KEY
klausul følger med navnet på den kolonne, der skal bruges som den primære nøgle. Bemærk, at tabellen allerede skal eksistere, før denne kommando udføres, og tabellen må ikke allerede have en primær nøgle.
Løsning 4 (eksisterende tabel, primærnøglebegrænsning):
ALTER TABLE product ADD CONSTRAINT PK_product_id PRIMARY KEY (id);
Diskussion:
Brug en forespørgsel som denne, hvis du vil navngive en primær nøglebegrænsning for en eksisterende tabel. Her er den primære nøglebegrænsning, PK_product_id
, genereres fra kolonnen id
. Hvis du ikke angiver begrænsningsnavnet, genererer databasen et standard begrænsningsnavn (navnet vil variere fra database til).