加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle db中的条件唯一约束

发布时间:2020-12-12 13:05:17 所属栏目:百科 来源:网络整理
导读:我有一种情况,我需要根据另一个列值对列[attribute]强制执行唯一的约束. 所以例如我有一个像Table(ID,EID,Name,ISDeleted) ISDeleted只能有一个值为null或’y'(活动或删除),我想仅在RecordStatus = null时才为EID,RecordStatus创建一个唯一的约束,因为我不关
我有一种情况,我需要根据另一个列值对列[attribute]强制执行唯一的约束.

所以例如我有一个像Table(ID,EID,Name,ISDeleted)

ISDeleted只能有一个值为null或’y'(活动或删除),我想仅在RecordStatus = null时才为EID,RecordStatus创建一个唯一的约束,因为我不关心是否有多个具有相同ID的删除记录.请注意,EID可以具有空值.

我正在使用Oracle DB.

您不能创建约束.但是您可以创建一个独特的基于函数的索引.这充分利用了Oracle不索引NULL值的事实 – 其中isDeleted为NOT NULL的任何行将不会包含在索引中,因此唯一约束将不适用于它们.
CREATE UNIQUE INDEX one_not_deleted
    ON table_name( (CASE WHEN isDeleted IS NULL
                         THEN eid
                         ELSE null
                      END) );

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读