13 марта 2011 г. 2:13 пользователь Dmitry E. Oboukhov <unera@debian.org> написал:
DI> индекс построил
DI> CREATE UNIQUE INDEX "tbli" ON "tbl" ("col") WHERE "col" IS NOT NULL;
DI> а как построить CONSTRAINT? не хочется RULE приделывать
DI> Чем вышеприведённый индекс не устраивает?
а я попробовал в такую таблицу подобавлять записи с одинаковым 'col' - вполне нормально добавляются. хотя в документации написано что уникальный индекс контроллирует и вставку данных тоже.
Предполагаю, что ситуация подобна следующей: dmitigr=> create table ttt(nm text); CREATE TABLE dmitigr=> create unique index ttt_uidx on ttt(nm) where nm notnull; CREATE INDEX dmitigr=> insert into ttt(nm) values('dima'); INSERT 0 1 dmitigr=> insert into ttt(nm) values('Dima'); INSERT 0 1
Если так, то нижеследующая команда может быть прольёт свет:
dmitigr=> create unique index ttt_uidx2 on ttt(lower(nm)) where nm notnull; ERROR: could not create unique index "ttt_uidx2" DETAIL: Key (lower(nm))=(dima) is duplicated.
что-то толи я не так делаю, толи не так читаю, спать видимо пора... --