oracle db中的条件唯一约束

前端之家收集整理的这篇文章主要介绍了oracle db中的条件唯一约束前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一种情况,我需要根据另一个列值对列[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相关文章