Re: [pgsql-ru-general] Re: [pgsql-ru-general] Частично уникальное поле
От | Dmitriy Igrishin |
---|---|
Тема | Re: [pgsql-ru-general] Re: [pgsql-ru-general] Частично уникальное поле |
Дата | |
Msg-id | AANLkTinbprK222D24m2ZDwLabzM=rhFdufLA5jtx209j@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [pgsql-ru-general] Частично уникальное поле (Nikolay Samokhvalov <samokhvalov@gmail.com>) |
Ответы |
Re: [pgsql-ru-general] Re: [pgsql-ru-general] Частично уникальное поле
|
Список | 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).
А вот это не так. Ограничение уникальности (UNIQUE CONSTRAINT)
является не индексом, а его зависимостью. Т.е. невозможно удалить
уникальный индекс, порожденный неявно при создании ограничения
уникальности.
Видимо, именно такой объект и хочет создать автор. Однако следует
иметь в виду, что индекс, автоматически создаваемый при создании
ограничения уникальности будет не частичным.
является не индексом, а его зависимостью. Т.е. невозможно удалить
уникальный индекс, порожденный неявно при создании ограничения
уникальности.
Видимо, именно такой объект и хочет создать автор. Однако следует
иметь в виду, что индекс, автоматически создаваемый при создании
ограничения уникальности будет не частичным.
IS NOT NULL можно смело опустить, т.к. проверки на уникальность в юник-индексе и так всегда проводятся по NOT NULL значениям.
--
// Dmitriy.
В списке pgsql-ru-general по дате отправления: