【发布时间】:2010-10-01 04:58:16
【问题描述】:
假设我有一个 Oracle PL/SQL 块,它向表中插入一条记录,需要从唯一约束错误中恢复,如下所示:
begin
insert into some_table ('some', 'values');
exception
when ...
update some_table set value = 'values' where key = 'some';
end;
是否可以用省略号替换某些内容以捕获唯一约束错误?
【问题讨论】:
-
以这种方式使用异常有点慢,因为引发异常需要相当多的时间。尝试合并。
-
同意。但请记住,这个例子只是许多可能的用例之一。问题实际上是“唯一约束错误的 id 是什么?”。这就是为什么我投了威廉的回答,但接受了里卡多的回答。
-
PL/SQL 代码中的异常不像托管或高级语言(C#、Java)那样昂贵。在数据库应用程序中,真正的“缓慢”是由数据库访问引起的,在这种情况下,PL/SQL 异常成本是微不足道的