OVERWRITE解決によるUPDATEROWMISSINGの処理

この例では、証跡とデータベースのレコードに対する適用可能な変更前イメージと変更後イメージを使用したOVERWRITE解決を説明しています。ターゲット行が存在しない場合の解決方法を示します。論理的な解決は、行をターゲットに上書きして両方のデータベースを再度同期させることであり、この方法が使用されます。

表9-11 OVERWRITE解決によるUPDATEROWMISSING競合の処理

イメージ SQL コメント

証跡内の変更前イメージ

name='Jane'
phone='333'
address='Oracle Pkwy'
salary=200
balance=200
comment=NULL
last_mod_time='9/1/10 7:00'

N/A

証跡内の変更後イメージ

phone='4444'
address='Holly'
last_mod_time='9/1/10 8:00'

ターゲット・データベースのイメージ

None (row for Jane is missing)

Replicatによって適用され、競合を検出する初期UPDATE

SQLバインド変数:

1)'4444'
2)'Holly'
3)'9/1/10 8:00'
4)'Jane'
5)'333'
6)'Oracle Pkwy'
7)200
8)200
9)NULL
10)'9/1/10 7:00'

このSQLは、データが見つからないというエラーを戻します。COMPARECOLS文がALLに設定されているため、すべての列がWHERE句で使用されます。

競合を解決するためにReplicatによって適用されるINSERT

SQLバインド変数:

1)'Jane'
2)'4444'
3)'Holly'
4)200
5)200
6)NULL
7)'9/1/10 8:00'

OVERWRITEが解決であるため、更新は挿入に変更されます。列の変更後イメージがあれば使用され、ない場合は変更前イメージが使用されます。