PL/SQLを駆使してデータを更新する。
ちょっと複雑な更新をしなきゃいけないので、
改めてPL/SQLを勉強したいと思いました。
『SQLパズル』にはめぼしいものがなかったので、別の本から・・・
今考えてるやりかたは、
- 一時表を作成し、データをコピーしておく。
- PL/SQLでupsertしていく。
一時表の作成
-- トランザクション終了時にデータが削除される一時表の作成 CREATE GLOVAL TEMPORARY TABLE 一時表名 ON COMMIT DELETE ROWS 表定儀; -- セッション終了時にデータが削除される一時表の作成 CREATE GLOVAL TEMPORARY TABLE 一時表名 ON COMMIT PRESERVE ROWS
PL/SQLでupsertの例文
MERGE INTO 更新対象の表 a USING 一時表 b ON a.列1 = b.列x WHEN MATCHED THEN UPDATE SET a.列2 = b.列y, a.列3 = b.列z WHEN NOT MATCHED THEN INSERT VALUES (b.列A, b.列B, b.列C);