以下のように表示されます。
(日本語)
ORA-38104: ON句で参照する列は更新できません
(英語)
ORA-38104: Columns referenced in the ON Clause cannot be updated
発生パターン
このエラーは以下のような場合に発生します。
- MERGE文で、ON句に指定した条件の列を更新しようとした
- エラー例
- SQL> MERGE INTO tbl01 2 USING tbl02 3 ON (tbl01.id = tbl02.id) 4 WHEN MATCHED THEN 5 UPDATE SET 6 tbl01.id = tbl02.id, 7 tbl01.name = tbl02.name 8 WHEN NOT MATCHED THEN 9 INSERT (id, name) 10 VALUES (tbl02.id, tbl02.name) 11 / ON (tbl01.id = tbl02.id) * 行3でエラーが発生しました。: ORA-38104: ON句で参照する列は更新できません: "TBL01"."ID"
6行目でid列をUPDATEしようとしているが、id列は3行目の結合条件に使用しているためエラーとなっています。
対処法
- MERGE文のON句に指定した列は更新することはできないので、
ON句に指定した列を更新しなくても良いようにMERGE文を見直してください。