スマートフォン・ジン | Smartphone-Zine

引っ越し先→ https://smartphone-zine.com/

マルチテーブルアップデート

マルチテーブルアップデート 複数テーブルの情報から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;