2011-10-27 73 views
7

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

回答

11

您可以使用基于funcction指数(FBI)实现这一点:

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

这造成除“默认”的所有值的唯一索引。

+0

这是正确的方法,只需注意您需要授予查询重写FBI的工作。 – phil

+2

自8i以来,查询重写的要求并不存在。 –

+0

你是绝对正确的,不知道为什么这个想法一直困扰着我。活到老,学到老 – phil