Hey, ich habe folgende Tabelle:
CREATE TABLE foo
(
id serial NOT NULL,
a integer NOT NULL,
b integer NOT NULL,
c text,
CONSTRAINT foo_pkey PRIMARY KEY (id),
CONSTRAINT foo_a_b_c_key UNIQUE (a, b, c)
);
Nun war mir aufgefallen, dass das UNIQUE nicht greift, wenn c NULL ist. Also folgendes ist möglich:
id a b c
1 1 2 NULL
2 1 2 NULL
Ist das normal oder ein Fehler? Ich gehe davon aus, dass es normal ist, da man NULL in pg auch nicht mit dem Gleichheitsoperator erwischt, nur mit IS. Die Begründung dafür in der Dokumentation finde ich… fragwürdig, um es nett auszudrücken.
Ich werde ja vermutlich nicht die erste Person sein, die in dieser Situation ist. Ich verwende postgresql-server-9.2.4, die letzte stabile Version meiner Distribution. Gibt es eine Möglichkeit für Einzigartigkeit trotz NULL Wert zu sorgen?