マルチテーブルアップデート
複数テーブルの情報からUPDATEを実行する方法を検証しました。以下のようにすればDテーブルの内容でCテーブルを更新することが出来ます。
しかしこの方法はあまり早く有りません。(かといってそんなに遅くもありません。)
結合ビュー(Join View)に対してUPDATEを実施するほうが高速に動作するようです。方法はBYPASS_UJVCを参照の事。
create table C( TEL_NUMBER VARCHAR2(10) NOT NULL, /* KEY */ KBN1 VARCHAR2(10), KBN2 VARCHAR2(10), CONSTRAINT C_PK PRIMARY KEY (TEL_NUMBER) ); create table D( TEL_NUMBER VARCHAR2(10) NOT NULL, /* KEY */ KBN1 VARCHAR2(10), KBN2 VARCHAR2(10), CONSTRAINT D_PK PRIMARY KEY (TEL_NUMBER) ); insert into C values('1','',''); insert into C values('2','',''); insert into C values('3','',''); insert into C values('4','',''); insert into C values('100','',''); insert into D values('1','a','a'); insert into D values('2','b','b'); insert into D values('3','c','c'); insert into D values('200','d','d'); insert into D values('5','e','e'); UPDATE C SET (KBN1,KBN2)= (SELECT D.KBN1,D.KBN2 FROM D WHERE C.TEL_NUMBER = D.TEL_NUMBER) WHERE EXISTS (SELECT 'x' FROM D WHERE C.TEL_NUMBER = D.TEL_NUMBER); select * from C; drop table C; drop table d;