メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012年12月1日)

既存の行を置き換えてマージ操作を実現する

既存の行を置き換えてマージ操作を実現するには、以下の手順を実行します。

  1. 次の疑似コードに示すように、ステージングテーブルを作成し、マージの対象となるデータを移します。

    Copy
    create temp table stage (like target); insert into stage select * from source where source.filter = 'filter_expression';
  2. ステージングテーブルで内部結合を使用して、ターゲットテーブルから更新の対象となる行を削除します。

    問題が発生した場合に全体をロールバックできるよう、削除操作と挿入操作を単一のトランザクションにまとめます。

    Copy
    begin transaction; delete from target using stage where target.primarykey = stage.primarykey;
  3. ステージングテーブルからすべての行を挿入します。

    Copy
    insert into target select * from stage; end transaction;
  4. ステージングテーブルを削除 (Drop) します。

    Copy
    drop table stage;