PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Null in eindeutiger Spalte zulassen

Das ist ein Missverständnis.
Der UNIQUE Constraint tut genau was du willst. Mehrere NULL Werte können in einer durch UNIQUE definierten Spalte koexistieren .

Das Handbuch:

Im Allgemeinen wird eine Unique-Einschränkung verletzt, wenn es mehr als eine Zeile in der Tabelle gibt, in der die Werte aller in der Einschränkung enthaltenen Spalten gleich sind. Bei diesem Vergleich werden jedoch zwei Nullwerte nicht als gleich angesehen. Das bedeutet, dass es selbst bei Vorliegen einer Eindeutigkeitsbeschränkung möglich ist, doppelte Zeilen zu speichern, die einen Nullwert enthalten in mindestens einer der eingeschränkten Spalten. Dieses Verhalten entspricht dem SQL-Standard, aber wir haben gehört, dass andere SQL-Datenbanken diese Regel möglicherweise nicht befolgen. Seien Sie also vorsichtig, wenn Sie Anwendungen entwickeln, die portabel sein sollen.

Fettdruck von mir.

Beachten Sie, dass Zeichentypen eine leere Zeichenfolge zulassen ('' ), was nicht ist ein NULL -Wert und würde genau wie jeder andere Nicht-Null-Wert einen eindeutigen Verstoß auslösen, wenn er in mehr als einer Zeile eingegeben wird.