PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Autoriser null dans une colonne unique

C'est un malentendu.
Le UNIQUE la contrainte fait exactement ce que tu veux. Plusieurs NULL les valeurs peuvent coexister dans une colonne définie UNIQUE .

Le manuel :

En général, une contrainte unique est violée lorsqu'il y a plus d'une ligne dans la table où les valeurs de toutes les colonnes incluses dans la contrainte sont égales. Cependant, deux valeurs nulles ne sont pas considérées comme égales dans cette comparaison. Cela signifie que même en présence d'une contrainte unique, il est possible de stocker des lignes en double contenant une valeur nulle dans au moins une des colonnes contraintes. Ce comportement est conforme à la norme SQL, mais nous avons entendu dire que d'autres bases de données SQL pourraient ne pas suivre cette règle. Soyez donc prudent lorsque vous développez des applications destinées à être portables.

J'insiste sur moi.

Sachez que les types de caractères autorisent une chaîne vide ('' ), ce qui n'est pas un NULL valeur et déclencherait une violation unique comme toute autre valeur non nulle lorsqu'elle est entrée dans plus d'une ligne.