OVERWRITE解決によるDELETEROWEXISTSの処理

この例では、証跡とデータベースのレコードに対する適用可能な変更前イメージと変更後イメージを使用したOVERWRITE解決を説明しています。ここでは、ソース行は削除されたがターゲット行は存在する場合の解決方法を示します。この場合、OVERWRITE解決により、ターゲットに削除が適用されます。

表9-12 OVERWRITE解決によるDELETEROWEXISTS競合の処理

イメージ SQL コメント

証跡内の変更前イメージ

name='Mary'
phone='222222'
address='Holly'
salary=100
balance=100
comment=NULL
last_mod_time='9/1/10 5:00'

N/A

証跡内の変更後イメージ

None

N/A

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

name='Mary'
phone='1234567890'
address='Oracle Pkwy'
salary=100
balance=600
comment=com
last_mod_time='9/1/10 7:00'

行はターゲットに存在しますが、phoneaddressbalancecommentlast_mod_timeの各列が証跡内の変更前イメージと異なっています。

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

SQLバインド変数:

1)'Mary'
2)'222222'
3)'Holly'
4)100
5)100d
6)NULL
7)'9/1/10 5:00'

COMPARECOLS文がALLに設定されているため、すべての列がWHERE句で使用されます。

変更前の値と現行値が異なるため、データが見つからないというエラーが発生します。

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

SQLバインド変数:

1)'Mary'

OVERWRITEが解決であるため、(整合性エラーを回避するために)主キーのみを使用してDELETEが適用されます。