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');
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;
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);