Problema:
Vuoi creare una chiave primaria per una tabella in un database.
Esempio:
Vogliamo una chiave primaria per una tabella chiamata product
.
Soluzione 1 (nuova tabella):
CREATE TABLE product ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL, price DECIMAL(7,2) );
Discussione:
Per creare una nuova tabella con una colonna definita come chiave primaria, puoi utilizzare la parola chiave PRIMARY KEY
alla fine della definizione di tale colonna. Nel nostro esempio creiamo la tabella product
utilizzando un CREATE TABLE
clausola, con i nomi delle colonne e i rispettivi tipi di dati tra parentesi. Scegliamo l'id della colonna come chiave primaria di questa tabella, quindi designiamo PRIMARY KEY
alla fine della definizione di questa colonna.
Tieni presente che puoi creare una sola chiave primaria per una determinata tabella.
Soluzione 2 (nuova tabella):
CREATE TABLE product ( name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL), price DECIMAL(7,2), PRIMARY KEY(name, producer) );
Discussione:
Un altro modo per definire una chiave primaria durante la creazione di una nuova tabella è con una PRIMARY KEY
clausola alla fine delle definizioni di colonna. In questo caso, designiamo una o più colonne come argomento per la PRIMARY KEY
clausola; queste colonne diventano la chiave primaria per la tabella.
Si noti che questo approccio consente le chiavi primarie create con più colonne. In questo esempio, la chiave primaria per la tabella product
è formato da due colonne:name
e producer
.
Soluzione 3 (tabella esistente):
ALTER TABLE product ADD PRIMARY KEY (id);
Discussione:
È anche possibile definire una chiave primaria per una tabella esistente che non ha ancora una chiave primaria.
Qui, la tabella viene modificata utilizzando un ALTER TABLE
clausola. La tabella (nel nostro esempio, product
) prende il nome dalla parola chiave ALTER TABLE
, quindi il ADD PRIMARY KEY
segue la clausola con il nome della colonna da utilizzare come chiave primaria. Nota che la tabella deve esistere già prima che questo comando venga eseguito e la tabella non deve avere già una chiave primaria.
Soluzione 4 (tabella esistente, vincolo di chiave primaria):
ALTER TABLE product ADD CONSTRAINT PK_product_id PRIMARY KEY (id);
Discussione:
Utilizzare una query come questa se si desidera assegnare un nome a un vincolo di chiave primaria per una tabella esistente. Qui, il vincolo della chiave primaria, PK_product_id
, viene generato dalla colonna id
. Se non specifichi il nome del vincolo, il database genera un nome del vincolo predefinito (il nome varia in base al database).