powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Уникальность одного значения в поле
9 сообщений из 9, страница 1 из 1
Уникальность одного значения в поле
    #39155287
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как создать ограничение на уникальность одного значения в поле.
Например, есть поле (колонка) f1 типа boolean. Требуется, чтобы в этом поле была только одна запись со значением TRUE,
остальные записи либо NULL, либо FALSE.
Спасибо.
...
Рейтинг: 0 / 0
Уникальность одного значения в поле
    #39155435
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trot,
триггер
...
Рейтинг: 0 / 0
Уникальность одного значения в поле
    #39155445
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trotКак создать ограничение на уникальностьуникальный индекс.Petro123триггерпродемонстрируешь?
...
Рейтинг: 0 / 0
Уникальность одного значения в поле
    #39155459
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2.big-trotКак создать ограничение на уникальностьуникальный индекс.условный [с кляузой WHERE] уникальный индекс.


PS насчёт "продемонстрировать": -- заводим таблу для хранения разделяемых ресурсов. описываем в ней единственную строку для данной таблицы. ключ -- описатель ресурса. далее на ней (строке) по оному ключу очередь "на разделяемый ресурс" реализуется в триггере вполне сносно [даже без upsert-а, но с известным бубном]. но зачем, если есть условные (частичные) индексы.
...
Рейтинг: 0 / 0
Уникальность одного значения в поле
    #39155506
kolts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что надо делать когда пришло значение true в этой колонке, а такой уже есть?
Или вы смотрите есть ли true и если да вставляете false?
...
Рейтинг: 0 / 0
Уникальность одного значения в поле
    #39155527
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trotКак создать ограничение на уникальность одного значения в поле.
Например, есть поле (колонка) f1 типа boolean. Требуется, чтобы в этом поле была только одна запись со значением TRUE,
остальные записи либо NULL, либо FALSE.
Спасибо.

по самой постановке - задача кривая (вы что то не то и не так пытаетесь решить IMHO).
Но если очень хочется то вот так вот можно:
Код: plsql
1.
create unique index only_one_active_key on test((case when f1 is true then f1 else NULL end));



или вот так вот (более компактно если в таблице много строк):
Код: plsql
1.
create unique index only_one_active_key on test(f1) where (f1 is true);



--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Уникальность одного значения в поле
    #39155588
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз всем спасибо.
Еще один вопрос.
Данную задачу (только ради понимания) можно решить через CONSTRAINT EXCLUDE, и если можно то как.
...
Рейтинг: 0 / 0
Уникальность одного значения в поле
    #39155641
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trotЕще раз всем спасибо.
Еще один вопрос.
Данную задачу (только ради понимания) можно решить через CONSTRAINT EXCLUDE, и если можно то как.

Я более менее могу придумать как это сделать но учитывая в официальной доке:
" Although it's allowed, there is little point in using B-tree or hash indexes with an exclusion constraint, because this does nothing that an ordinary unique constraint doesn't do better." смысла в этом нет.
А так по сути будет тоже самое решение что у меня просто записанное очень кривым образом.
...
Рейтинг: 0 / 0
Уникальность одного значения в поле
    #39156125
kolts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отсутствует постановка задачи. "Требуется только одна запись со значением TRUE". Что надо делать со вставляемыми данными? В какой момент проверка на уникальность? Или в готово таблице надо так сделать?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Уникальность одного значения в поле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]