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