これをクエリ レベルで設計する必要があります。これは、テーブル内のバージョン、削除、フラグ列に対して実行できます。
src_emp----> ソーステーブル
empno,ename,sal
1 ,aaa ,1000
2 ,bbb ,2000
3 ,ccc ,3000
ターゲット テーブルへの最初のロード trg_emp 出力は以下のようになります
empkey,empno,ename,sal ,version,flag,deleted
1 ,1 ,aaa ,1000 ,1 ,Y ,N
2 ,2 ,bbb ,2000 ,1 ,Y ,N
3 ,3 ,ccc ,3000 ,1 ,Y ,N
これを行った後、empno=3 の給与を sal=4000 に変更します。次に、ターゲット テーブルを更新すると、次のようになります。
empkey,empno,ename,sal ,version,flag,deleted
1 ,1 ,aaa ,1000 ,1 ,Y ,N
2 ,2 ,bbb ,2000 ,1 ,Y ,N
3 ,3 ,ccc ,3000 ,1 ,N ,N
4 ,3 ,ccc ,4000 ,2 ,Y ,N
上記では、empno=3 のバージョンが 2 に増加し、最後の行のフラグが "Y" に変更され、前の行が empno=3 の "N" に変更されていることがわかります。バージョンとフラグが機能すると、3 番目のレコードが削除されます。ソースで削除された場合、そのフラグは「Y」になる必要がありますソーステーブルでempno = 2を削除すると、最終的なターゲットテーブルは次の形式のようになるはずです
empkey,empno,ename,sal,version,flag,deleted
1,1,aaa,1000,1,Y,N
2,2,bbb,2000,1,Y,Y
3,3,ccc,3000,1,N,N
4,3,ccc,4000,2,Y,N
ターゲット テーブルの 2 行目のフラグは、削除されたフラグの値を "Y" として更新する必要があります。