主コンテンツへ
Oracle® Fusion Middleware Oracle GoldenGateリファレンスfor Windows and UNIX
12c (12.2.0.1)
E70112-04
目次へ移動
目次

前
次

3.90 HANDLETPKUPDATE

適用対象

Replicat (非統合モード)

説明

HANDLETPKUPDATEパラメータでは、主キーへの更新の結果、一時的な重複が発生するときの制約エラーを防止します。これは、非統合ReplicatのOracleパラメータで、ターゲット・データベースがOracleリリース11.2.0.2より前のリリースである場合に必要です。ターゲットのOracleデータベースがリリース11.2.0.2以降である場合、一時的な主キーの重複は、HANDLETPKUPDATEを必要とせずに、自動的に処理されます。統合Replicatは、この発行を自動的に処理するため、このパラメータを設定する必要はありません。

更新によって、トランザクション内の複数の行の主キーに影響を与える場合に、一時的な主キーの重複が発生します。この種類の文は、通常、SET x = x+nの式、または、新しい値が既存の値と同じになるように値をシフトするその他の操作を使用します。

次に、この状況を発生させる可能性がある値の変更の流れを示します。この例では、表をITEM、主キー列名をCODE、この表の行の現在のキーの値を123とします。

update item set code = 2 where code = 1;
update item set code = 3 where code = 2;
update item set code = 4 where code = 3;

この例では、最初のUPDATEがターゲットに適用されると、表にすでに主キー値2が存在するため、エラーが発生します。ターゲット・トランザクションは、制約違反エラーを返します。デフォルトでは、Replicatはこうした違反を検出または処理せずに異常終了します。

HANDLETPKUPDATEを使用すると、ターゲット表にDEFERRABLE INITIALLY IMMEDIATEが制約として作成されます。ターゲットの制約をDEFERRABLEにできない場合、ReplicatはHANDLECOLLISIONSおよびREPERRORパラメータに指定された既存のルールに従ってエラーを処理するか、異常終了します。

このパラメータは、パラメータ・ファイルで使用可能で、次のようにMAP文内で使用できます。

MAP ggs.equip_account, TARGET ggs.equip_account, HANDLETPKUPDATE; 

デフォルト

一時主キー更新で異常終了する

構文

HANDLETPKUPDATE