gpt4 book ai didi

oracle - oracle db中的条件唯一约束

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

我有一种情况,我需要根据另一个列值对列 [属性] 强制执行唯一约束。

例如,我有一个像 Table(ID, EID, Name, ISDeleted) 这样的表

ISDeleted 只能有一个值 null 或 'y'(事件或已删除),并且我想在 EID 上创建一个唯一约束,仅当 ISDeleted = null 时才 ISDeleted,因为我不在乎是否有多个具有相同 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 - oracle db中的条件唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10317774/

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