SQL Constraints
Check Constraint è usato per specificare un predicato che ogni tupla deve soddisfare in una data relazione. Limita i valori che una colonna può contenere in una relazione.
- Il predicato nel check constraint può contenere una sub query.
- Il check constraint definito su un attributo limita la gamma di valori per quell’attributo.
- Se il valore aggiunto a un attributo di una tupla viola il check constraint, il check constraint valuta falso e il corrispondente aggiornamento viene interrotto.
- Il check constraint è generalmente specificato con il comando CREATE TABLE in SQL.
Sintassi:
CREATE TABLE pets( ID INT NOT NULL, Name VARCHAR(30) NOT NULL, Breed VARCHAR(20) NOT NULL, Age INT, GENDER VARCHAR(9), PRIMARY KEY(ID), check(GENDER in ('Male', 'Female', 'Unknown')) );
Nota: Il check constraint nel comando SQL qui sopra limita il GENDER ad appartenere solo alle categorie specificate. Se una nuova tupla viene aggiunta o una tupla esistente nella relazione viene aggiornata con un GENDER che non appartiene a nessuna delle tre categorie menzionate, l’aggiornamento del database corrispondente viene interrotto.
Query
Constraint: Solo gli studenti con età >= 17 anni possono iscriversi all’università.
Schema per il database degli studenti dell’università:
CREATE TABLE student( StudentID INT NOT NULL, Name VARCHAR(30) NOT NULL, Age INT NOT NULL, GENDER VARCHAR(9), PRIMARY KEY(ID), check(Age >= 17) );
Relazione studente:
StudentID | Nome | Età | Gender |
---|---|---|---|
1001 | Ron | 18 | Maschio |
1002 | Sam | 17 | Maschio |
1003 | Georgia | 17 | Femmina |
1004 | Erik | 19 | Sconosciuto |
1005 | Christine | 17 | Femmina |
Spiegazione: Nella relazione di cui sopra, l’età di tutti gli studenti è maggiore di 17 anni, secondo il vincolo menzionato nella dichiarazione di controllo nello schema della relazione. Se, tuttavia, viene eseguita la seguente istruzione SQL:
INSERT INTO student(STUDENTID, NAME, AGE, GENDER) VALUES (1006, 'Emma', 16, 'Female');
Non ci sarà alcun aggiornamento del database e poiché l’età < 17 anni.
Diverse opzioni per usare Check constraint:
- Con alter: Il check constraint può anche essere aggiunto a una relazione già creata usando la sintassi:
alter table TABLE_NAME modify COLUMN_NAME check(Predicate);
- Dare un nome variabile al check constraint:Ai check constraints può essere dato un nome variabile usando la sintassi:
alter table TABLE_NAME add constraint CHECK_CONST check (Predicate);
- Rimuovere il check constraint: Il check constraint può essere rimosso dalla relazione nel database da SQL server usando la sintassi:
alter table TABLE_NAME drop constraint CHECK_CONSTRAINT_NAME;
- Drop check constraint: Il check constraint può essere eliminato dalla relazione nel database in MySQL usando la sintassi:
alter table TABLE_NAME drop check CHECK_CONSTRAINT_NAME;
Questo articolo è stato contribuito da Mayank Kumar. Se ti piace GeeksforGeeks e vuoi contribuire, puoi anche scrivere un articolo usando contribute.geeksforgeeks.org o inviare il tuo articolo a [email protected]. Vedi il tuo articolo apparire sulla pagina principale di GeeksforGeeks e aiuta altri Geek.