|
|
|
Уникальность одного значения в поле
|
|||
|---|---|---|---|
|
#18+
Как создать ограничение на уникальность одного значения в поле. Например, есть поле (колонка) f1 типа boolean. Требуется, чтобы в этом поле была только одна запись со значением TRUE, остальные записи либо NULL, либо FALSE. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 10:23 |
|
||
|
Уникальность одного значения в поле
|
|||
|---|---|---|---|
|
#18+
big-trot, триггер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 12:47 |
|
||
|
Уникальность одного значения в поле
|
|||
|---|---|---|---|
|
#18+
big-trotКак создать ограничение на уникальностьуникальный индекс.Petro123триггерпродемонстрируешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 12:56 |
|
||
|
Уникальность одного значения в поле
|
|||
|---|---|---|---|
|
#18+
p2.big-trotКак создать ограничение на уникальностьуникальный индекс.условный [с кляузой WHERE] уникальный индекс. PS насчёт "продемонстрировать": -- заводим таблу для хранения разделяемых ресурсов. описываем в ней единственную строку для данной таблицы. ключ -- описатель ресурса. далее на ней (строке) по оному ключу очередь "на разделяемый ресурс" реализуется в триггере вполне сносно [даже без upsert-а, но с известным бубном]. но зачем, если есть условные (частичные) индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 13:09 |
|
||
|
Уникальность одного значения в поле
|
|||
|---|---|---|---|
|
#18+
Что надо делать когда пришло значение true в этой колонке, а такой уже есть? Или вы смотрите есть ли true и если да вставляете false? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 13:41 |
|
||
|
Уникальность одного значения в поле
|
|||
|---|---|---|---|
|
#18+
big-trotКак создать ограничение на уникальность одного значения в поле. Например, есть поле (колонка) f1 типа boolean. Требуется, чтобы в этом поле была только одна запись со значением TRUE, остальные записи либо NULL, либо FALSE. Спасибо. по самой постановке - задача кривая (вы что то не то и не так пытаетесь решить IMHO). Но если очень хочется то вот так вот можно: Код: plsql 1. или вот так вот (более компактно если в таблице много строк): Код: plsql 1. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 13:50 |
|
||
|
Уникальность одного значения в поле
|
|||
|---|---|---|---|
|
#18+
Еще раз всем спасибо. Еще один вопрос. Данную задачу (только ради понимания) можно решить через CONSTRAINT EXCLUDE, и если можно то как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 14:25 |
|
||
|
Уникальность одного значения в поле
|
|||
|---|---|---|---|
|
#18+
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." смысла в этом нет. А так по сути будет тоже самое решение что у меня просто записанное очень кривым образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 14:59 |
|
||
|
Уникальность одного значения в поле
|
|||
|---|---|---|---|
|
#18+
Отсутствует постановка задачи. "Требуется только одна запись со значением TRUE". Что надо делать со вставляемыми данными? В какой момент проверка на уникальность? Или в готово таблице надо так сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 23:37 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39155641&tid=1997494]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 504ms |

| 0 / 0 |
