gpt4 book ai didi

sql - 基于列值的Oracle唯一约束

转载 作者:行者123 更新时间:2023-12-04 13:28:24 24 4
gpt4 key购买 nike

我有以下独特的约束

dup_Checklist_QNum UNIQUE (QUESTION_NO, IS_ACTIVE)

我正在尝试防止两个问题处于 Activity 状态时具有相同的问题编号(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。

关于sql - 基于列值的Oracle唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11335899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com