-1

これをクエリ レベルで設計する必要があります。これは、テーブル内のバージョン、削除、フラグ列に対して実行できます。

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" として更新する必要があります。

4

1 に答える 1