sql >> Base de Datos >  >> RDS >> PostgreSQL

Permitir nulo en columna única

Esto es un malentendido.
El UNIQUE la restricción hace exactamente Lo que quieras. Varios NULL los valores pueden coexistir en una columna definida UNIQUE .

El manual:

En general, se viola una restricción única cuando hay más de una fila en la tabla donde los valores de todas las columnas incluidas en la restricción son iguales. Sin embargo, dos valores nulos no se consideran iguales en esta comparación. Eso significa que incluso en presencia de una restricción única, es posible almacenar filas duplicadas que contengan un valor nulo en al menos una de las columnas restringidas. Este comportamiento se ajusta al estándar SQL, pero hemos escuchado que otras bases de datos SQL podrían no seguir esta regla. Por lo tanto, tenga cuidado al desarrollar aplicaciones destinadas a ser portátiles.

Énfasis en negrita mío.

Tenga en cuenta que los tipos de caracteres permiten una cadena vacía ('' ), que no un NULL valor y desencadenaría una infracción única al igual que cualquier otro valor no nulo cuando se ingresa en más de una fila.