Resumen: en este tutorial, aprenderá sobre la restricción de PostgreSQL UNIQUE
para asegurarse de que los valores almacenados en una columna o un grupo de columnas sean únicos en todas las filas de una tabla.
A veces, desea asegurarse de que los valores almacenados en una columna o un grupo de columnas sean únicos en toda la tabla, como direcciones de correo electrónico o nombres de usuario.
PostgreSQL le proporciona la restricción UNIQUE
que mantiene la singularidad de los datos correctamente.
Cuando una restricción UNIQUE
está en su lugar, cada vez que inserta una nueva fila, comprueba si el valor ya está en la tabla. Rechaza el cambio y emite un error si el valor ya existe. El mismo proceso se lleva a cabo para actualizar los datos existentes.
Cuando agrega una restricción UNIQUE
a una columna o grupo de columnas, PostgreSQL creará automáticamente un índice único en la columna o el grupo de columnas.
Ejemplo de restricción única de PostgreSQL
La siguiente instrucción crea una nueva tabla llamada person
con una restricción UNIQUE
para la columna email
.
Code language: SQL (Structured Query Language) (sql)
Tenga en cuenta que la restricción UNIQUE
anterior se puede reescribir como una restricción de tabla como se muestra en la siguiente consulta:
Code language: SQL (Structured Query Language) (sql)
Primero, inserte una nueva fila en la tabla person
utilizando la instrucción INSERT
:
Code language: SQL (Structured Query Language) (sql)
En segundo lugar, inserte otra fila con correo electrónico duplicado.
Code language: SQL (Structured Query Language) (sql)
PostgreSQL emitió un mensaje de error.
Code language: SQL (Structured Query Language) (sql)
Crear una restricción ÚNICA en varias columnas
PostgreSQL le permite crear una restricción UNIQUE
para un grupo de columnas utilizando la siguiente sintaxis:
Code language: SQL (Structured Query Language) (sql)
La combinación de valores de las columnas c2 y c3 será única en toda la tabla. El valor de la columna c2 o c3 no debe ser único.
Agregar restricción única mediante un índice único
A veces, es posible que desee agregar una restricción única a una columna o grupo de columnas existentes. Echemos un vistazo al siguiente ejemplo.
Primero, supongamos que tiene una tabla llamada equipment
:
Code language: SQL (Structured Query Language) (sql)
En segundo lugar, cree un índice único basado en la columna equip_id
.
Code language: SQL (Structured Query Language) (sql)
En tercer lugar, agregue una restricción única a la tabla equipment
utilizando el índice equipment_equip_id
.
Code language: SQL (Structured Query Language) (sql)
Observe que la instrucción ALTER TABLE
adquiere un bloqueo exclusivo en la mesa. Si tiene alguna transacción pendiente, esperará a que se completen todas las transacciones antes de cambiar la mesa. Por lo tanto, debe verificar la tabla pg_stat_activity
para ver las transacciones pendientes actuales que están en curso utilizando la siguiente consulta:
Code language: SQL (Structured Query Language) (sql)
Debe mirar el resultado para encontrar la columna state
con el valor idle in transaction
. Esas son las transacciones que están pendientes de completar.
En este tutorial, ha aprendido sobre las restricciones UNIQUE
y cómo utilizarlas para imponer valores almacenados en una columna o un grupo de columnas únicas en filas dentro de la misma tabla.
- ¿Fue útil este tutorial ?
- YesNo