上書き|上書きなし
有効な対象
Replicat
摘要
OVERRIDEDUPSおよびNOOVERRIDEDUPSパラメータを使用して、両方のレコードが同一のキーを持つときに、Replicatがターゲット・データベースの既存のレコードをレプリケートされたレコードを上書きするかどうかを制御します。
-
OVERRIDEDUPSでは、既存のレコードを上書きします。ロード前にターゲット表の切捨てを行わない初期ロードや、信頼できるソースとターゲット表の再同期のときに使用できます。SQLDUPERRパラメータをOVERRIDEUPSとともに使用して、データベースによって返される重複INSERT操作の数値エラー・コードを指定します。詳細は、「SQLDUPERR」を参照してください。 -
NOOVERRIDEDUPS(デフォルト)は、既存のレコードを上書きするかわりに、重複レコード・エラーを生成します。例外MAP文とSQLEXEC句を使用して、エラーに対するレスポンスを開始できます。そうしない場合、トランザクションは異常終了することがあります。例外マップが使用できない場合にReplicatを異常終了させずに重複レコードをバイパスするには、次のような
REPERRORパラメータ文を指定します(<error>は、主キー制約エラーに対するデータベース・エラー番号です)。
REPERROR (<error>, IGNORE)
たとえば、Oracle AI Databaseの場合、この文は次のようになります:
REPERROR (1, IGNORE)
Replicatは、無視された重複レコードを破棄ファイルに書き込みます。
OVERRIDEDUPSまたはNOOVERRIDEDUPSは、適用するTABLEまたはMAP文よりも前に指定します。TABLEまたはMAP文の様々なグループごとに異なるルールを作成できます。パラメータの動作は切り替わります。つまり、1つのパラメータは後続のTABLEまたはMAP文に対して有効であることは、別の方が出現するまでです。
OVERRIDEDUPSは、HANDLECOLLISIONSが使用されると自動的に有効になります。詳細は、HANDLECOLLISIONS | NOHANDLECOLLISIONSを参照してください。
WARNING: OVERRIDEDUPSが有効な場合、複数のReplicatプロセスにわたってレコードが時間系列順に処理されない場合があります。
デフォルト
NOOVERRIDEDUPS
構文
OVERRIDEDUPS | NOOVERRIDEDUPS