oracle db中的条件唯一约束

oracle db中的条件唯一约束,第1张

概述我有一种情况,我需要根据另一个列值对列[attribute]强制执行唯一的约束. 所以例如我有一个像Table(ID,EID,Name,ISDeleted) ISDeleted只能有一个值为null或’y'(活动或删除),我想仅在RecordStatus = null时才为EID,RecordStatus创建一个唯一的约束,因为我不关心是否有多个具有相同ID的删除记录.请注意,EID可以具有空值. 我有一种情况,我需要根据另一个列值对列[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) );
总结

以上是内存溢出为你收集整理的oracle db中的条件唯一约束全部内容,希望文章能够帮你解决oracle db中的条件唯一约束所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1167499.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存