具有定义值的唯一约束
Posted
技术标签:
【中文标题】具有定义值的唯一约束【英文标题】:Unique constraint with defined value 【发布时间】:2011-07-12 16:57:23 【问题描述】:鉴于以下示例表结构,有没有办法添加唯一约束以确保 (GUID, 'Y') 组合的唯一性?
应用程序逻辑 - 由guid
更新生成一个新版本,具有相同的guid
但新的luid
;和以前的不活动('Y'->'N')
GUID - 外部 ID LUID - 内部 ID
create table id_active(
"GUID" RAW(16) NOT NULL,
"LUID" RAW(16) NOT NULL,
"IS_ACTIVE" char(1) NOT NULL CHECK ( "IS_ACTIVE" IN ('Y', 'N')),
PRIMARY KEY ("GUID", "LUID"),
--unique constraint goes here
【问题讨论】:
【参考方案1】:您可以创建一个唯一的基于函数的索引,并利用 Oracle 不在 b-tree 索引中索引 NULL 值这一事实。
CREATE UNIQUE INDEX one_active_guid
ON table_name( (CASE WHEN is_active = 'Y'
THEN guid
ELSE null
END) );
【讨论】:
以上是关于具有定义值的唯一约束的主要内容,如果未能解决你的问题,请参考以下文章