Vérifier la contrainte dans SQL - Expliquée avec des exemples de syntaxe MySQL et SQL Server

La contrainte CHECK est utilisée pour limiter la plage de valeurs pouvant être placée dans une colonne.

Si vous définissez une contrainte CHECK sur une seule colonne, elle n'autorise que certaines valeurs pour cette colonne.

Si vous définissez une contrainte CHECK sur une table, elle peut limiter les valeurs de certaines colonnes en fonction des valeurs d'autres colonnes de la ligne.

CHECK SQL sur CREATE TABLE

Le SQL suivant crée une contrainte CHECK sur la colonne «Age» lorsque la table «Persons» est créée. La contrainte CHECK garantit que vous ne pouvez avoir personne de moins de 18 ans:

MySQL:

CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, CHECK (Age>=18) ); 

Accès SQL Server / Oracle / MS:

CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int CHECK (Age>=18) ); 

Pour autoriser la dénomination d'une contrainte CHECK et pour définir une contrainte CHECK sur plusieurs colonnes, utilisez la syntaxe SQL suivante:

Accès MySQL / SQL Server / Oracle / MS:

CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, City varchar(255), CONSTRAINT CHK_Person CHECK (Age>=18 AND City="Sandnes") ); 

CHECK SQL sur ALTER TABLE

Pour créer une contrainte CHECK sur la colonne «Age» lorsque la table est déjà créée, utilisez le SQL suivant:

Accès MySQL / SQL Server / Oracle / MS:

ALTER TABLE Persons ADD CHECK (Age>=18); 

Pour autoriser la dénomination d'une contrainte CHECK et pour définir une contrainte CHECK sur plusieurs colonnes, utilisez la syntaxe SQL suivante:

Accès MySQL / SQL Server / Oracle / MS:

ALTER TABLE Persons ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City="Sandnes"); 

DROP a CHECK Contraintes

Pour supprimer une contrainte CHECK, utilisez le SQL suivant:

Accès SQL Server / Oracle / MS:

ALTER TABLE Persons DROP CONSTRAINT CHK_PersonAge; 

MySQL:

ALTER TABLE Persons DROP CHECK CHK_PersonAge;