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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.