Tiempo de lectura:1 Minutos, 25 Segundos

A la hora de crear una tabla podemos especificar diferentes restricciones. La restricción UNIQUE en PostgreSQL evalua 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 creara un indice automaticamente.

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

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 indice y después crear la restricción única:

Para crear el indice 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;

Deja una respuesta

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

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

Perfiles en Redes Sociales