如何记录导致唯一约束违规的值

Chr*_*tle 6 oracle unique-constraint

我有一个INSERT在 Oracle 上运行的冗长语句失败:

ORA-00001: unique constraint (MYPROJECT.MYTABLE_PK) violated
Run Code Online (Sandbox Code Playgroud)

约束是:

CONSTRAINT "MYTABLE_PK" PRIMARY KEY ("ENCOUNTER_NUM", "CONCEPT_CD", "PROVIDER_ID", "START_DATE", "MODIFIER_CD")
Run Code Online (Sandbox Code Playgroud)

INSERT会记录有问题的语句,但不会记录导致违反约束的值。

有没有办法记录或以其他方式保存和查看违反约束的值?

这是 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64 位生产

Jus*_*ave 5

您可以使用DML 错误日志记录

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;
Run Code Online (Sandbox Code Playgroud)

这会将违反约束的所有行记录到err$mytable表中。