Oracle对PK的唯一约束违反了

时间:2013-12-03 16:08:28

标签: oracle

我有一个存储过程,我从外部程序调用来存储数据。设置proc的方式是它插入表中,异常'dup_val_on_index'代替它。

如果我捕获'dup_val_on_index'异常并在其中进行更新,我怎么能得到这个错误?我假设PK会捕获这个特定的异常,因为它会创建一个副本吗?

2 个答案:

答案 0 :(得分:2)

为什么不首先使用MERGE

如果你真的不想使用merge,只需构建一个内部pl / sql-block并在那里捕获异常:

create or replace procedure proc(param1 varchar2)
as
some_var varchar2(50);
begin
  -- do some things
  begin
    insert on your table;
    exception when dup_val_on_index then
      update on your table;
  end;
  --proceed with some more things
end proc;

答案 1 :(得分:2)

是的,对于主键约束错误,将引发dup_val_on_index命名错误。

也许您的更新是导致错误引发的代码。