A la hora de crear una tabla podemos especificar diferentes restricciones. La restricción CHECK en PostgreSQL evalúa si una columna cumple con los requisitos establecidos. Cuando se inserte o actualice un dato, internamente usa un booleano para decidir si se cumple con la condición o no y después inserta o actualiza el dato si cumple la condición.
Sintaxis
Para establecer una restricción CHECK al crear una tabla utiliza la siguiente sintaxis:
CREATE TABLE nombreTabla (
id SERIAL PRIMARY KEY,
campo1 VARCHAR (50),
...
campo2 DATE CHECK (campo2 > '1986-09-26'),
campo3 DATE CHECK (campo3 > campo2),
campo4 numeric CHECK(campo4 > 0)
);
Lenguaje del código: JavaScript (javascript)
En esta sintaxis se han establecido tres restricciones:
- Campo2 debe ser una fecha mayor de ‘1986-09-26’.
- Campo3 debe ser mayor de Campo2.
- Campo4 debe ser un número mayor de cero.
Nombre de la restricción
Cuando creas una restricción de tipo CHECK automáticamente se le da un nombre compuesto por tabla_columna_check pero si quieres un nombre específico puedes especificárselos al crear la restricción:
CREATE TABLE nombreTabla (
id SERIAL PRIMARY KEY,
campo1 VARCHAR (50),
...
campo2 DATE CONSTRAINT nombreRestriccion CHECK (campo2 >; '1986-09-26'),
campo3 DATE CONSTRAINT nombreRestriccion CHECK (campo3 > campo2),
campo4 numeric CONSTRAINT nombreRestriccion CHECK(campo4 > 0)
);
Lenguaje del código: JavaScript (javascript)
CHECK de una tabla ya existente
Si ya tienes la tabla creada y quieres modificar un campo para que contenga una restricción check puedes hacerlo utilizando ALTER.
ALTER TABLE nombreTabla
ADD CONSTRAINT nombreRestriccion
CHECK (
campo1 > 0
AND campo2 >= 0
AND campo3 > campo2
);
En el siguiente ejemplo puedes comprobar como se establece una restricción en la tabla ya existente empleados para que el sueldo sea siempre mayor de cero: