MERGE

MERGE文は、指定した結合条件を満たす行が存在すればUPDATE、存在しなければINSERTを行います。

MERGEの構文

MERGE INTO [target-schema.]target-table
USING {[source-schema.]source-table|subquery}
ON (condition [,condition...])
WHEN MATCHED THEN update-clause
WHEN NOT MATCHED THEN insert-clause
target-schema

挿入または更新する表のスキーマ

target-table

挿入または更新する表

source-schema

挿入または更新する行を取得する表のスキーマ

source-table
挿入または更新する行を取得する表
subquery
挿入または更新する行を取得するサブクエリ
condition

条件

update-clause

UPDATE文

insert-clause

INSERT文

MERGEに必要な権限

OracleデータベースでMERGE文を実行するのに必要な権限を次に示す。

MERGEの使用例

MERGE INTO forex USING DUAL ON (currency_pair = 'USDJPY')
WHEN MATCHED THEN
  UPDATE SET rate = 89.95
WHEN NOT MATCHED THEN
  INSERT (currency_pair, rate) VALUES ('USDJPY', 89.95);

SQLの分類

DML (Data manipulation language)

制約

行を挿入または更新する列に対して整合性制約が設定されていることがある。この場合、整合性制約に違反する値を挿入または更新しようとすると、エラーが発生する。

行1でエラーが発生しました。:
ORA-02290: チェック制約(XXXX.AGECHECK)に違反しました

関連SQL