Re: [pgsql-ru-general] Re: [pgsql-ru-general] Частично уникальное поле

Поиск
Список
Период
Сортировка
От Dmitriy Igrishin
Тема Re: [pgsql-ru-general] Re: [pgsql-ru-general] Частично уникальное поле
Дата
Msg-id AANLkTi=EOrtPdLHJP8V8MPRtup5PX=QRDHvjmC-EnYCH@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [pgsql-ru-general] Частично уникальное поле  (Nikolay Samokhvalov <samokhvalov@gmail.com>)
Список pgsql-ru-general


13 марта 2011 г. 2:00 пользователь Nikolay Samokhvalov <samokhvalov@gmail.com> написал:
2011/3/13 Dmitry E. Oboukhov <unera@debian.org>

Пользователь вводит некие данные.

Если он их не вводил, там NULL. Если он вводит эти данные, то они
должны быть уникальными между всеми введенными данными.

что-то я не пойму как построить ограничение, которое будет отслеживать
уникальность только между теми значениями что не NULL.

индекс построил

CREATE UNIQUE INDEX "tbli" ON "tbl" ("col") WHERE "col" IS NOT NULL;

а как построить CONSTRAINT? не хочется RULE приделывать


UNIQUE INDEX  это уже и есть ограничение целостности (constraint).

IS NOT NULL можно смело опустить, т.к. проверки на уникальность в юник-индексе и так всегда проводятся по NOT NULL значениям.
Верно, только благодаря частичному индексу удается сократить его размер
как раз за счет того, что в него не войдут NULL-значения.
Поэтому, если не требуется делать из столбца ключ, то по соображениям
эффетивности следует использовать частичны индекс.



--
// Dmitriy.


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

Предыдущее
От: Nikolay Samokhvalov
Дата:
Сообщение: Re: [pgsql-ru-general] Частично уникальное поле
Следующее
От: Dmitriy Igrishin
Дата:
Сообщение: Re: [pgsql-ru-general] Re: [pgsql-ru-general] Частично уникальное поле