|
|
OracleLEZIONI - CHIAVI PRIMARIE E CAMPI UNICI Constraint UNIQUEPuò 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 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 SQL> INSERT INTO contact VALUES ('Bruni', 'Pasquale', 'Via Roma 55'); Constraint PRIMARY KEYEsaminiamo 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 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 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 SQL> INSERT INTO impiegati VALUES (2, 'Narcisi Luciano', NULL, NULL, DEFAULT, NULL); ![]() |