2011-10-27 106 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