SQL Constraints
Check Constraint se utiliza para especificar un predicado que cada tupla debe satisfacer en una relación dada. Limita los valores que puede tener una columna en una relación.

  • El predicado en la restricción de comprobación puede tener una subconsulta.
  • La restricción de comprobación definida en un atributo restringe el rango de valores para ese atributo.
  • Si el valor que se añade a un atributo de una tupla viola la restricción de comprobación, la restricción de comprobación se evalúa como falsa y se aborta la actualización correspondiente.
  • La restricción de comprobación se especifica generalmente con el comando CREATE TABLE en SQL.

Sintaxis:

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: La restricción de comprobación en el comando SQL anterior restringe el GENDER para que pertenezca sólo a las categorías especificadas. Si se añade una nueva tupla o se actualiza una tupla existente en la relación con un GÉNERO que no pertenece a ninguna de las tres categorías mencionadas, se aborta la correspondiente actualización de la base de datos.

Query

Constraint: Sólo los estudiantes con edad >= 17 son pueden matricularse en una universidad.
Esquema para la base de datos de estudiantes en la universidad:

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

Relación de estudiantes:

StudentID Name Age Gender
1001 Ron 18 Hombre
1002 Sam 17 Hombre
1003 Georgia 17 Hembra
1004 Erik 19 Desconocido
1005 Christine 17 Hembra

Explicación: En la relación anterior, la edad de todos los estudiantes es mayor que igual a 17 años, según la restricción mencionada en la sentencia de comprobación en el esquema de la relación. Sin embargo, si se ejecuta la siguiente sentencia SQL:

INSERT INTO student(STUDENTID, NAME, AGE, GENDER) VALUES (1006, 'Emma', 16, 'Female');

No habrá ninguna actualización de la base de datos y como la edad < 17 años.

Diferentes opciones para utilizar la restricción de verificación:

  • Con alter: La restricción de verificación también puede añadirse a una relación ya creada utilizando la sintaxis:
    alter table TABLE_NAME modify COLUMN_NAME check(Predicate);
  • Dar nombre de variable a la restricción de verificación:A las restricciones de verificación se les puede dar un nombre de variable utilizando la sintaxis:
    alter table TABLE_NAME add constraint CHECK_CONST check (Predicate);
  • Eliminar la restricción de verificación: La restricción de verificación se puede eliminar de la relación en la base de datos de SQL server utilizando la sintaxis:
    alter table TABLE_NAME drop constraint CHECK_CONSTRAINT_NAME;
  • Eliminar la restricción de verificación: La restricción de verificación puede ser eliminada de la relación en la base de datos en MySQL utilizando la sintaxis:
    alter table TABLE_NAME drop check CHECK_CONSTRAINT_NAME;

Este artículo ha sido escrito por Mayank Kumar. Si te gusta GeeksforGeeks y quieres contribuir, también puedes escribir un artículo en contribute.geeksforgeeks.org o enviarlo por correo a [email protected]. Verás tu artículo en la página principal de GeeksforGeeks y ayudarás a otros Geeks.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.