Oracleで実行されている長いINSERT
ステートメントが失敗します。
ORA-00001: unique constraint (MYPROJECT.MYTABLE_PK) violated
制約は次のとおりです。
CONSTRAINT "MYTABLE_PK" PRIMARY KEY ("ENCOUNTER_NUM", "CONCEPT_CD", "PROVIDER_ID", "START_DATE", "MODIFIER_CD")
問題のあるINSERT
ステートメントはログに記録されますが、制約違反の原因となった値はログに記録されません。
制約に違反した値をログに記録するか、保存して表示する方法はありますか?
これは、Oracle Database 11g Enterprise Editionリリース11.2.0.3.0-64ビット本番です
DML error logging を使用できます
begin
dbms_errlog.create_error_log( dml_table_name => 'MYTABLE' );
end;
/
insert into mytable
<<your select statement>>
log errors into err$mytable
reject limit unlimited;
これにより、err$mytable
テーブルへの制約に違反したすべての行がログに記録されます。