Probleem:
U wilt een primaire sleutel maken voor een tabel in een database.
Voorbeeld:
We willen een primaire sleutel voor een tabel met de naam product
.
Oplossing 1 (nieuwe tabel):
CREATE TABLE product ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL, price DECIMAL(7,2) );
Discussie:
Als u een nieuwe tabel wilt maken met een kolom die is gedefinieerd als de primaire sleutel, kunt u het trefwoord PRIMARY KEY
gebruiken aan het einde van de definitie van die kolom. In ons voorbeeld maken we de tabel product
met behulp van een CREATE TABLE
clausule, met de namen van de kolommen en hun respectieve gegevenstypen tussen haakjes. We kiezen de kolom-ID als de primaire sleutel van deze tabel, dus we noemen PRIMARY KEY
aan het einde van de definitie van deze kolom.
Houd er rekening mee dat u slechts één primaire sleutel voor een bepaalde tabel kunt maken.
Oplossing 2 (nieuwe tabel):
CREATE TABLE product ( name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL), price DECIMAL(7,2), PRIMARY KEY(name, producer) );
Discussie:
Een andere manier om een primaire sleutel te definiëren tijdens het maken van een nieuwe tabel is met een PRIMARY KEY
clausule aan het einde van de kolomdefinities. In dit geval wijzen we een of meer kolommen toe als argument voor de PRIMARY KEY
clausule; deze kolommen worden de primaire sleutel voor de tabel.
Merk op dat deze benadering primaire sleutels toestaat die met meerdere kolommen zijn gebouwd. In dit voorbeeld is de primaire sleutel voor de tabel product
wordt gevormd door twee kolommen:name
en producer
.
Oplossing 3 (bestaande tabel):
ALTER TABLE product ADD PRIMARY KEY (id);
Discussie:
Het is ook mogelijk om een primaire sleutel te definiëren voor een bestaande tabel die nog geen primaire sleutel heeft.
Hier wordt de tabel gewijzigd met behulp van een ALTER TABLE
clausule. De tabel (in ons voorbeeld product
) is genoemd naar het trefwoord ALTER TABLE
, dan de ADD PRIMARY KEY
clausule volgt met de naam van de kolom die als primaire sleutel moet worden gebruikt. Merk op dat de tabel al moet bestaan voordat deze opdracht wordt uitgevoerd en dat de tabel niet al een primaire sleutel mag hebben.
Oplossing 4 (bestaande tabel, primaire sleutelbeperking):
ALTER TABLE product ADD CONSTRAINT PK_product_id PRIMARY KEY (id);
Discussie:
Gebruik een query als deze als u een primaire sleutelbeperking voor een bestaande tabel een naam wilt geven. Hier, de primaire sleutelbeperking, PK_product_id
, wordt gegenereerd uit de kolom id
. Als u de naam van de beperking niet opgeeft, genereert de database een standaardnaam van de beperking (de naam verschilt per database).