【问题标题】: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

【问题讨论】:

    标签: sql oracle check-constraints


    【解决方案1】:

    您可以创建一个唯一的基于函数的索引,并利用 Oracle 不在 b-tree 索引中索引 NULL 值这一事实。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      相关资源
      最近更新 更多