回答:
相互に関連する副照会(Kerriが推奨)の代替アプローチは、MERGEステートメントを使用することです。これは、副選択(両方のステートメントの実行プランを確認することによってのみ検証できます)よりも効率的です。
MERGE INTO table_b
USING
(
SELECT id,
field_2
FROM table_a
) ta ON (ta.id = table_b.id)
WHEN MATCHED THEN UPDATE
SET table_b.field_2 = ta.field_2
MERGE
ステートメントの唯一の制限は、ステートメントが結合されている列を更新できないことです。つまり、ON
句で使用されている列を更新できません。
ORA-01555: snapshot too old
tableBのfield_2が更新されるたびにtableAを更新するトリガーをtableBに作成できます。トリガーの作成に関する詳細については、こちらをご覧ください-http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#BABCIBBJ