BUG #5005: unique constraint considers nulls to be equal

Поиск
Список
Период
Сортировка
От Dean Schulze
Тема BUG #5005: unique constraint considers nulls to be equal
Дата
Msg-id 200908232259.n7NMxnt4069286@wwwmaster.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #5005: unique constraint considers nulls to be equal  (Alvaro Herrera <alvherre@commandprompt.com>)
Список pgsql-bugs
The following bug has been logged online:

Bug reference:      5005
Logged by:          Dean Schulze
Email address:      dean.w.schulze@comcast.net
PostgreSQL version: 8.3.7
Operating system:   Win XP
Description:        unique constraint considers nulls to be equal
Details:

When I apply this constraint it fails because there are records that will
violate the new constraint:

ALTER TABLE table1 ADD CONSTRAINT unique_county_year_idnumber UNIQUE
(county, year, idnumber);


Some of the records it fails on have null for idnumber.  According to the
documentation section 5.3.3 nulls should not violate a unique constraint:

However, two null values are not considered equal in this comparison. That
means even in the presence of a unique constraint it is possible to store
duplicate rows that contain a null value in at least one of the constrained
columns.

Here are the duplicate records that violate this constraint:

select county, year, idnumber, count(0) from table1 group by county, year,
idnumber having (count(0) > 1) order by county, count(0);


"county","year","idnumber","count"
"AD",2009,"A57504",2
"AD",2009,"A58395",2
"AD",2009,"A58286",2
"AD",2009,"A58299",2
"AD",2009,"",5
"AR",2009,"2148.0",2
"AR",2009,"20.0",2
"BD",2009,"22497.0",2
"BD",2009,"22499.0",2
"BD",2009,"",5
"DS",2009,"1426",2
"DS",2009,"1443",2
"DV",2009,"3237",2
"DV",2009,"1775.0",2
"DV",2009,"3202",2
"DV",2009,"",3
"EL",2009,"",3
"JF",2009,"J01718",2
"LR",2009,"606.0",2
"LR",2009,"",4

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Craig Ringer
Дата:
Сообщение: Re: BUG #4996: postgres.exe memory consumption keeps going up
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: BUG #5005: unique constraint considers nulls to be equal