MERGE 文使ってるのに ORA-00001 が発生する><
java.sql.SQLException: ORA-00001: unique constraint (SCOTT.EMP_UK) violated
SelectInsertするときにInsert先のテーブルにPK、UK、FK、NOTNULL制約などが張ってあって
SelectInsertのデバッグがメンドイとき - niwaのoracle日記
Insertに失敗すると結構ストレスがたまります。
そもそもどのレコードで失敗したのかわからなかったりすると
NotNullだったらSelectのWhereにIS NOT NULLかいて探したり
UKだったら GROUP HAVING 書いて探したり
かなりめんどくさいので10gからはdbms_errlogパッケージ使ってレコード特定してます。
を参考にしたら、一意制約違反になったレコードを特定することができた。
これは便利!てか、これできないとツライ><
SQL> conn scott/tiger Connected. SQL> exec dbms_errlog.create_error_log('EMP'); SQL> merge into emp ... SQL> select * from err$_emp; ...
Merging datasets with NULL values
を参考に SYS_OP_MAP_NONNULL 関数使って解決した。。。