【问题标题】:Oracle constraintOracle 约束
【发布时间】:2011-10-27 19:18:06
【问题描述】:

我可以添加一个检查约束以确保所有值都是唯一的,但允许默认值重复吗?

【问题讨论】:

    标签: oracle


    【解决方案1】:

    您可以使用基于函数的索引 (FBI) 来实现此目的:

    create unique index idx on my_table (case when col != 'DEFAULT' then col end));
    

    这将为除“DEFAULT”之外的所有值创建唯一索引。

    【讨论】:

    • 这是正确的方法,请注意,您需要授予查询重写才能让 FBI 工作。
    • 从 8i 开始就没有查询重写的要求了。
    • 您说的完全正确,不知道为什么这个想法一直困扰着我。生活和学习