Diego wrote:
Hi,
I´m a brazilian programmer!
I have a question about Postgres UNIQUE KEY. Look:
(Step 1)
CREATE TABLE test (
id integer not null primary key,
id_uni integer not null,
cod integer,
name varchar(40),
constraint test_uk unique(id_uni, cod)
)
(Step 2)
insert into test (id, id_uni, cod, name)
values (1, 1, null, 'A')
(Step 3)
insert into test (id, id_uni, cod, name)
values (2, 1, null, 'B') =========> [Have the same UNIQUE KEY]
Why postgresql don´t break insertion in this case????
Thanks
Diego Ziquinatti
Brazil
Diego,
In PostgreSQL, NULL is not considered a unique value, as it represents
an "unknown" value. From the docs regarding unique constraints:
"...null values are not considered equal in this comparison. That means
even in the presence of a unique constraint it is possible to store an
unlimited number of rows that contain a null value in at least one of
the constrained columns."
See:
http://www.postgresql.org/docs/8.0/interactive/ddl-constraints.html#AEN1996
Regards,
Eric Faulhaber
---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings