Restricción UNIQUE en PostgreSQL

A la hora de crear una tabla podemos especificar diferentes restricciones. La restricción UNIQUE en PostgreSQL evalúa si en una columna el valor se repite. Si encuentra el valor repetido nos devolverá un fallo cuando intentemos insertar o actualizar la tabla. Cuando agregas la restricción UNIQUE debes saber que PostgreSQL creará un índice automáticamente.

Tabla nueva

Sintaxis

Para establecer una restricción UNIQUE al crear una tabla utiliza la siguiente sintaxis:

CREATE TABLE nombreTabla (
	id SERIAL PRIMARY KEY,
	campo1 VARCHAR (50),
	campo2 VARCHAR (50) UNIQUE
);

Si quieres establecer una restricción única a un grupo de columnas debes utilizar la siguiente sintaxis:

CREATE TABLE nombreTabla (
	id SERIAL PRIMARY KEY,
	campo1 VARCHAR (50),
	campo2 VARCHAR (50),
	UNIQUE (campo1, campo2)
);

Con la sintaxis anterior estas indicando que la combinación del campo1 y campo2 siempre debe ser único.

Ejemplo

En el siguiente ejemplo puedes comprobar cómo se crea una restricción única sobre el campo email de la tabla de empleados:

CREATE TABLE empleados
(
    id_empleado numeric(2,0),
    email varchar(50) UNIQUE,
    sueldo integer
);
Restricción UNIQUE en PostgreSQL

Tabla existente

Sintaxis

Si ya tienes la tabla creada y quieres modificar un campo para que contenga una restricción UNIQUE puedes hacerlo utilizando ALTER, pero antes debes crear un índice y después crear la restricción única:

Para crear el índice usa esta sintaxis:

CREATE UNIQUE INDEX CONCURRENTLY nombreIndice 
ON nombreTabla (campo);

Para crear la restricción unica usa esta sintaxis:

ALTER TABLE nombreTabla 
ADD CONSTRAINT nombreRestriccion 
UNIQUE USING INDEX nombreIndice;

Ejemplo

Imagina que ya tenemos creada la tabla de empleados y queremos aplicar una restricción única al campo email. Deberíamos seguir estos pasos:

CREATE UNIQUE INDEX CONCURRENTLY empleados_email 
ON empleados (email);
ALTER TABLE empleados 
ADD CONSTRAINT email_unico 
UNIQUE USING INDEX empleados_email;

Escribir un comentario

Este sitio está protegido por reCAPTCHA y se aplican la política de privacidad y los términos de servicio de Google.