oracledb中的条件唯一约束
在这种情况下,我需要根据另一个列值对列[attribute]强制实施唯一约束 例如,我有一个类似表的表(ID、EID、Name、ISDeleted) ISDeleted只能有一个值null或“y”(活动或已删除),我想在EID上创建一个唯一的约束,ISDeleted仅在ISDeleted=null时被删除,因为我不关心是否有多个具有相同id的已删除记录。请注意,EID可以有null值oracledb中的条件唯一约束,oracle,constraints,unique,Oracle,Constraints,Unique,在这种情况下,我需要根据另一个列值对列[attribute]强制实施唯一约束 例如,我有一个类似表的表(ID、EID、Name、ISDeleted) ISDeleted只能有一个值null或“y”(活动或已删除),我想在EID上创建一个唯一的约束,ISDeleted仅在ISDeleted=null时被删除,因为我不关心是否有多个具有相同id的已删除记录。请注意,EID可以有null值 我正在为此使用Oracle DB。您不能创建约束。但是您可以创建一个唯一的基于函数的索引。这利用了Oracle不
我正在为此使用Oracle DB。您不能创建约束。但是您可以创建一个唯一的基于函数的索引。这利用了Oracle不为空值编制索引这一事实,即
isDeleted
为notnull
的任何行都不会包含在索引中,因此唯一约束不会应用于它们
CREATE UNIQUE INDEX one_not_deleted
ON table_name( (CASE WHEN isDeleted IS NULL
THEN eid
ELSE null
END) );
“else null”将做什么?它会插入空值还是允许插入重复记录?@SantoshPingale-由于Oracle索引不会为空值编制索引,
ELSE null
将从索引中排除允许重复的行。