と選択的に一意性インデックスの問題私は時間の任意の時点で、私は(ID、名前、タイプ)のためのis_deleted「N」を有する唯一つのエントリが欲しいの選択一意のインデックスオラクル:更新
CREATE UNIQUE INDEX fn_unique_idx
ON table1 (CASE WHEN is_deleted='N' THEN id ELSE null END,
CASE WHEN is_deleted='N' THEN name ELSE null END,
CASE WHEN is_deleted='N' THEN type ELSE null END);
を作成しました。
挿入は正常に動作します。すなわち、is_deleted = 'N'で挿入しようとすると、複数のis_deleted 'Y'を入力することができます。
しかし、私はそれを更新しようと Oracleエラーをスローをされています
ORA-00600: internal error code, arguments: [qctVCO : bfc], [1], [0], [1], [871], [1], [2], [875], [], [], [], []
SQL : UPDATE table1 set is_deleted = 'Y' where id = 1, name = 'foo' and type =bar';
私が削除したとして、この現在のエントリを設定し、更新されたデータを使用して新しいエントリを挿入し、is_deleted =「N」にしたいです。これは基本的に歴史を維持するためです。
誰かがこの問題を解決するのに役立つことがありますか?
ありがとうございました。
OracleバージョンはOracle Database 11g Enterprise Editionリリース11.1.0.7.0 - 64ビット製品です –
11.1のqctVCO:bfcの唯一のバグは7599848です。これは索引付きの暗号化列を持つ表からの選択に関連しています。 Windowsでは11.7.0.7のパッチ6で修正され、11.2.0.1では修正されました。TDEを使用している場合を除き、おそらく関連はありませんが、Randyのパッチに同意し、それがなくならない場合はOracleにSARを提出します。私はまだBrankoのアドバイスを見ます。 (そして、私はコマンドと欠落している見積もりが転写エラーであると仮定し、あなたの実際のSQLの更新は有効ですか?) –