Hi,
ich habe eine (varchar) Spalte, die beliebig viele null-Werte enthalten kann. Aber jeder non-null-Wert darf nur genau einmal vorkommen. Z.B. darf der Wert ‘123’ nur einmal in der Spalte verwendet werden, aber eben auch beliebig viele null-Werte. Mich würde jetzt das genaue Verhalten eines unique-constraints interessieren: Sind null-Werte erlaubt oder nicht ?
Ich habe bereits in der Doku unter PostgreSQL: Documentation: Manuals: PostgreSQL 8.2: CREATE TABLE nachgeschaut, bin mir aber nicht sicher, ob ich es richtig verstanden habe.
Danke, Lothar
Hi,
ich habe eine (varchar) Spalte, die beliebig viele null-Werte enthalten kann. Aber jeder non-null-Wert darf nur genau einmal vorkommen. Z.B. darf der Wert ‘123’ nur einmal in der Spalte verwendet werden, aber eben auch beliebig viele null-Werte. Mich würde jetzt das genaue Verhalten eines unique-constraints interessieren: Sind null-Werte erlaubt oder nicht ?
Ich habe bereits in der Doku unter PostgreSQL: Documentation: Manuals: PostgreSQL 8.2: CREATE TABLE nachgeschaut, bin mir aber nicht sicher, ob ich es richtig verstanden habe.
Danke, Lothar
Warum testest Du es nicht?
test=*# create table blub (t text);
CREATE TABLE
test=*# create UNIQUE index idx_t on blub(t);
CREATE INDEX
test=*# insert into blub values (NULL);
INSERT 0 1
test=*# insert into blub values (NULL);
INSERT 0 1
test=*# insert into blub values (NULL);
INSERT 0 1
test=*# insert into blub values ('abc');
INSERT 0 1
test=*# insert into blub values (NULL);
INSERT 0 1
test=*# insert into blub values ('def');
INSERT 0 1
test=*# insert into blub values (NULL);
INSERT 0 1
test=*# insert into blub values ('abc');
ERROR: duplicate key violates unique constraint "idx_t"
Andreas