更新する具体化されたビューを使用したいと思いますON COMMIT
。私のバッキング ビューは、ローカル データベースの 2 つのテーブルとリモート データベースの 1 つのテーブルを DB リンク経由で結合します。2 つのローカル テーブルのいずれかに変更が加えられた場合にのみ、ビューを更新するにはどうすればよいですか?
この問題を解決する他の方法はありますか? マテリアライズド ビューで 2 つのローカル テーブルを結合し、リモート データベースの列に NULLS を設定してから、マテリアライズド ビューへの挿入/更新時にそれらのフィールドに入力するトリガーを設定することはできますか? または、マテリアライズド ビューへの更新はソース テーブルに反映されますか?
私はこのようなことをしています:
SELECT LOC1.ID, LOC1.NAME, LOC2.PRICING_TYPE, REM1.PURCHASING_ID
FROM LOCAL_TABLE_A LOC1, LOCAL_TABLE_B LOC2, REMOTE_TABLE@SOMEDB.WORLD REM1
WHERE LOC1.ID = LOC2.MASTER_ID
AND LOC1.REM_ID = REM1.ID
AND LOC2.YEAR = REM1.YEAR
はREMOTE_TABLE
、2 つのローカル テーブルに関連する情報のルックアップ テーブルにすぎません。ここでは何も動かすべきではありません。マテリアライズドビューを更新するのは、LOCAL_TABLE_A
OR LOCAL_TABLE_B
CHANGE の場合のみです。