Chiavi primarie e campi unici

Constraint UNIQUE

Può essere impostato su una o più colonne ed assicura, sull’intera tabella, l’unicità dei valori per le colonne protette. Di seguito le sintassi per applicare il vincolo UNIQUE all’interno di CREATE TABLE o ALTER TABLE, sia per una sola colonna sia per più colonne.

Sintassi del vincolo UNIQUE a livello di colonna

<nome colonna> <tipo> CONSTRAINT <nome vincolo> UNIQUE

Sintassi del vincolo UNIQUE semplificato (anonimo) a livello di colonna

<nome colonna> <tipo> UNIQUE

Sintassi del costraint UNIQUE a livello di tabella

CONSTRAINT <nome> UNIQUE (colonna, colonna, …)

Nota:Un constraint di tipo UNIQUE consente anche la memorizzazione di valori NULL nella colonna protetta, questo perché i valori NULL sono considerati diversi fra loro

Ad esempio creiamo la tabella Contact e definiremo un constraint UNIQUE a livello tabella.

SQL> CREATE TABLE Contact
  2 (
  3   Cognome VARCHAR2(15),
  4   Nome VARCHAR2(15),
  5   Indirizzo VARCHAR2(40),
  6   CONSTRAINT uq_Contact_CoNom UNIQUE (Cognome, Nome)
  7 );

Inseriamo una prima riga nella tabella “Contact”

SQL> INSERT INTO contact VALUES ('Bruni', 'Pasquale', 'Via Rigamonti 37');

Inseriamo un’altra riga che invece viola il constraint UNIQUE, anche se la terza colonna contiene un dato differente da quello inserito nella prima riga.

SQL> INSERT INTO contact VALUES ('Bruni', 'Pasquale', 'Via Roma 55');
Risultato della query

Constraint PRIMARY KEY

Esaminiamo il vincolo più famoso nel mondo dei database. È buona regola impostare, per almeno una colonna di ogni tabella, una chiave primaria al fine di stabilire l’univocità di ciascuna riga in tutta la tabella. Questo vincolo può essere definito sia a livello di colonna se stabilito su un’unica colonna, sia a livello di tabella se impostato su più colonne. Di seguito le sintassi per applicare il vincolo UNIQUE all’interno di CREATE TABLE o ALTER TABLE, sia per una sola colonna sia per più colonne.

Sintassi del vincolo PRIMARY KEY a livello di colonna

<nome colonna> <tipo> CONTRAINT <nome vincolo> PRIMARY KEY

Sintassi del vincolo PRIMARY KEY semplificato (anonimo) a livello di colonna

<nome colonna> <tipo> PRIMARY KEY

Sintassi del costraint PRIMARY KEY a livello di tabella

CONSTRAINT <nome> PRIMARY KEY (colonna, colonna, …)

Ad esempio modifichiamo la tabella “impiegati” definendo un constraint di tipo PRIMARY KEY sulla colonna “ID_Impiegato”.

SQL> ALTER TABLE impiegati ADD CONSTRAINT pk_impiegati_ID PRIMARY KEY (ID_Impiegato);

Visualizziamo il contenuto della colonna protetta dal vincolo denominato pk_impiegati_ID

SQL> SELECT id_impiegato FROM impiegati;
Risultato della query

Inseriamo ora una nuova riga che violi il vincolo pk_impiegati_ID: alla colonna id_impiegato assegniamo il valore 2, già usato in un precedente esempio.

SQL> INSERT INTO impiegati VALUES (2, 'Narcisi Luciano', NULL, NULL, DEFAULT, NULL);
Risultato della query
Both comments and pings are currently closed.

Comments are closed.