我有以下独特的约束
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
我需要仅在 IS_ACTIVE=1 时应用约束
您可以创建一个独特的基于函数的索引
CREATE UNIQUE INDEX idx_dup_active
ON <<table name>>( CASE WHEN is_active = 1
THEN question_no
ELSE NULL
END );
这利用了 Oracle B 树索引不存储叶块数据完全为 NULL 的数据这一事实。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)