在oracle过程中,检查是否存在具有主键的行,如果key已存在则引发异常

时间:2016-04-13 10:11:16

标签: sql oracle stored-procedures plsql

我有一个在表中插入行的过程。我做了各种检查,如果一切都通过,它会在表格中插入一行。

其中一项检查是检查表中是否已存在具有主键的行。如果已存在具有主键的行,则该过程应该能够捕获它并引发错误。

最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

为什么不让Oracle为您处理主键冲突,而不是手动检查主键冲突。如果您尝试插入表中,并且发现主键冲突,则Oracle会引发“dup_val_on_index”异常。例如:

declare
begin
  --try and insert a value into the table
  insert into my_table (
    id,
    description
  ) values (
    1,
    'a duplicate id'
  );
exception
  when dup_val_on_index then
    dbms_output.put_line('a duplicate primary key');
    --your error handling logic here
    raise; --optionally re-raise the exception
end;