0

1 つのログ テーブルと 1 つのビューがあります。ID_NO が指定されたログ テーブルと比較して、変更された行をビューから取得したいと考えています。ID_NO は 2 つのテーブル間で固定されていますが、他の列は変更される可能性があります。

つまり、Table2 と比較して 1 つ以上の列が変更された Table1 から行をフェッチしたいと思います。

例えば:

TABLE 1:
ID COL1 COL2 COL3
1  A    B    C
2  34   56   D
3  F    XY   24

TABLE 2:
ID COL1 COL2 COL3
1  A    B    C
2  34   56   F
3  1    XY   24

クエリは、TABLE2 から次を返す必要があります。

ID COL1 COL2 COL3
2  34   56   F
3  1    XY   24

お知らせ下さい。どうもありがとう!

4

2 に答える 2

0

変更テーブルから変更された行を識別するために使用される 2 番目のテーブルに ID を挿入するトリガーを変更テーブルに追加できます。テーブル間の値を比較するだけでもうまくいくかもしれませんが、多くの作業が必要です。変更された行の ID を取得する方が簡単かもしれません。

古い値も必要な場合に備えて、変更された列と値をログ テーブルに追加します。

于 2013-11-05T14:27:14.970 に答える
0
SELECT  *
FROM    one_view  vw
WHERE   EXISTS
        (
            SELECT  1
            FROM    log_table  t
            WHERE   vw.id_no = t.id_no
        )
;

質問が更新された後のメモ:

SELECT  *
FROM    table_2  t1
WHERE   EXISTS
        (
            SELECT  1
            FROM    table_1  t2
            WHERE   t1.id_no = t2.id_no
            AND
            (
                    t1.col1 <> t2.col1
                OR  t1.col2 <> t2.col2
                OR  t1.col3 <> t2.col3
            )
        )
;
于 2013-11-05T14:29:21.023 に答える