Restricción CHECK en PostgreSQL

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:

Restricción CHECK en PostgreSQL

Escribir un comentario