Oracle® Fusion Middleware Oracle GoldenGateリファレンスfor Windows and UNIX 12c (12.2.0.1) E70112-04 |
|
前 |
次 |
適用対象
Replicat (非統合モード)
説明
HANDLETPKUPDATE
パラメータでは、主キーへの更新の結果、一時的な重複が発生するときの制約エラーを防止します。これは、非統合ReplicatのOracleパラメータで、ターゲット・データベースがOracleリリース11.2.0.2より前のリリースである場合に必要です。ターゲットのOracleデータベースがリリース11.2.0.2以降である場合、一時的な主キーの重複は、HANDLETPKUPDATE
を必要とせずに、自動的に処理されます。統合Replicatは、この発行を自動的に処理するため、このパラメータを設定する必要はありません。
更新によって、トランザクション内の複数の行の主キーに影響を与える場合に、一時的な主キーの重複が発生します。この種類の文は、通常、SET x = x+
n
の式、または、新しい値が既存の値と同じになるように値をシフトするその他の操作を使用します。
次に、この状況を発生させる可能性がある値の変更の流れを示します。この例では、表をITEM
、主キー列名をCODE
、この表の行の現在のキーの値を1
、2
、3
とします。
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