微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL自定义异常

  在Oracle的procedure里,我们会用for update Nowait锁一些记录,防止多个用户同时修改同一条记录。为了捕捉ora-00054错误,并对用户进行友好提示,开发人员自定义一个exception,叫RESOURCE_BUSY_EXCEPTION,关联的Oracle错误代码就是ora-00054。这个自定义的exception在EDB里报错。

  原因是EDB里的自定义异常,只能绑定-20000 and -20999之间的错误代码

  在PG中,捕获未获得行锁的异常处理的例子:

1.通过错误码捕获

do $$declare
errmsg text;
begin
select * from t1 for update Nowait;
exception
when sqlSTATE '55P03' then
raise INFO 'row locked by others';
when others then
raise INFO 'others error';
end$$;

2.通过异常名捕获

do $$declare
errmsg text;
begin
select * from t1 for update Nowait;
exception
whenlock_not_available then
raise INFO 'row locked by others';
when others then
raise INFO 'others error';
end$$;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐