我有一个在表中插入行的过程。我做了各种检查,如果一切都通过,它会在表格中插入一行。
其中一项检查是检查表中是否已存在具有主键的行。如果已存在具有主键的行,则该过程应该能够捕获它并引发错误。
最好的方法是什么?
答案 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;