1

更新する具体化されたビューを使用したいと思います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_AOR LOCAL_TABLE_BCHANGE の場合のみです。

4

1 に答える 1

4

リモート テーブルに中間マテリアライズド ビューを使用できます。この MV は、手動で更新できるように、REFRESH ON DEMAND を使用してローカル DB に作成されます。MV は、リモート テーブルの代わりにローカル テーブルを使用します。

于 2010-10-06T12:26:44.250 に答える