以下の内容はhttps://yohei-a.hatenablog.jp/entry/20100620/1277030096より取得しました。


MERGE文使っているのに ORA-00001 発生

MERGE 文使ってるのに ORA-00001 が発生する><

java.sql.SQLException: ORA-00001: unique constraint (SCOTT.EMP_UK) violated

id:niwanos

SelectInsertするときにInsert先のテーブルにPK、UK、FK、NOTNULL制約などが張ってあって
Insertに失敗すると結構ストレスがたまります。
そもそもどのレコードで失敗したのかわからなかったりすると
NotNullだったらSelectのWhereにIS NOT NULLかいて探したり
UKだったら GROUP HAVING 書いて探したり
かなりめんどくさいので10gからはdbms_errlogパッケージ使ってレコード特定してます。

SelectInsertのデバッグがメンドイとき - niwaのoracle日記

を参考にしたら、一意制約違反になったレコードを特定することができた。
これは便利!てか、これできないとツライ><

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 関数使って解決した。。。




以上の内容はhttps://yohei-a.hatenablog.jp/entry/20100620/1277030096より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14