У меня есть следующие ограничения уникальности,Oracle Уникальный Constraint на основе значения столбца
dup_Checklist_QNum UNIQUE (QUESTION_NO, IS_ACTIVE)
Я пытаюсь предотвратить два вопроса, имеющих один и тот же номер вопроса, будучи активным (IS_ACTIVE значение = 1).
Все казалось прекрасным до тех пор, пока мне не пришлось повторно задать вопрос во второй раз.
QUESTION_NO=1, TEXT="Have you..", REV=1 IS_ACTIVE=0
QUESTION_NO=1, TEXT="Have you..", REV=2 IS_ACTIVE=0 <-- This should be ok but constraint was violated
QUESTION_NO=1, TEXT="Have you..", REV=3 IS_ACTIVE=1
QUESTION_NO=1, TEXT="Have you..", REV=3 IS_ACTIVE=1 <-- This should be throw constraint exception
мне нужно constrint применять только тогда, когда IS_ACTIVE = 1
Я думаю, что работаю, я могу просто деактивировать вопросы, используя уникальный номер 0.1, 0.2, 0.3 и т. Д. При условии, что мое приложение заботится только о том, когда значение равно 1, и игнорирует все остальные вопросы. – jeff
Возможный дубликат [Условное единственное ограничение в oracle db] (http://stackoverflow.com/questions/10317774/conditional-unique-constraint-in-oracle-db) –