Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 具有定义值的唯一约束_Sql_Oracle_Check Constraints - Fatal编程技术网

Sql 具有定义值的唯一约束

Sql 具有定义值的唯一约束,sql,oracle,check-constraints,Sql,Oracle,Check Constraints,给定以下示例表结构,是否有方法添加到唯一约束以确保(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_ACT

给定以下示例表结构,是否有方法添加到唯一约束以确保(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

您可以创建一个唯一的基于函数的索引,并利用Oracle不为b树索引中的空值编制索引这一事实

CREATE UNIQUE INDEX one_active_guid
    ON table_name( (CASE WHEN is_active = 'Y'
                         THEN guid
                         ELSE null
                      END) );