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.