D3V*_*D3V 17 oracle constraints unique
我有一种情况,我需要根据另一列值对列[属性]强制执行唯一约束.
例如,我有一个像Table这样的表(ID,EID,Name,ISDeleted)
ISDeleted只能有一个值null或'y'(活动或删除),并且我想在EID上创建唯一约束,ISDeleted仅在ISDeleted = null时,因为我不关心是否有多个具有相同id的已删除记录.请注意,EID可以具有空值.
我正在使用Oracle DB.
Jus*_*ave 24
您无法创建约束.但是您可以创建一个独特的基于函数的索引.这需要的是Oracle并不指数NULL values--其中任何行的事实的优点isDeleted是NOT NULL不会被包含在索引中,因此唯一约束并不适用于他们.
CREATE UNIQUE INDEX one_not_deleted
ON table_name( (CASE WHEN isDeleted IS NULL
THEN eid
ELSE null
END) );
Run Code Online (Sandbox Code Playgroud)