如果触发器执行时发生异常,如何进行错误处理?

Olyra 2011-05-20 11:53:17
如主键冲突,表不存在,不允许插入NULL值等等!!!
就是说如果触发执行时发生异常,我可以捕获异常,并写错误日志到一张表中。
...全文
798 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaojianmi1 2011-05-21
  • 打赏
  • 举报
回复
那么,在程序里写出来,发生触发器异常时,继续执行
zhaojianmi1 2011-05-20
  • 打赏
  • 举报
回复
这个估计得在代码里捕获
Olyra 2011-05-20
  • 打赏
  • 举报
回复
我不能让触发器发生的错误影响别的事务。简单的来说,如果操作某表,而使触发器执行,如果触发器抛出异常,则忽略此错误或将此错误处理掉,不影响整个事务。否则麻烦大了。
zhaojianmi1 2011-05-20
  • 打赏
  • 举报
回复
触发器是被动触发,总得有外部操作,你在外部操作的时候就可以捕获了
比如我在存储过程里有个insert into 语句不满足触发器的约束,那么就在这个语句这里捕获

可能每种数据库都有各自特点
Olyra 2011-05-20
  • 打赏
  • 举报
回复
蛋痛的db2, 不知道是我不熟悉, 还是db2不给力。
oracle的触发器可以很方便的进行异常处理.
Olyra 2011-05-20
  • 打赏
  • 举报
回复
触发器抛出异常,哪个外部程序去捕获。触发器是被动触发才会执行,这时谁会去捕获异常啊!!!
zhaojianmi1 2011-05-20
  • 打赏
  • 举报
回复
对,在触发器里不能写handler,这个市在存储过程里写的
触发器本身不能捕获,他只把异常抛出来,需要通过外部的程序来捕获
Olyra 2011-05-20
  • 打赏
  • 举报
回复
可是在触发器不能用handler
再说,你的语句也写错了,应该是
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
zhaojianmi1 2011-05-20
  • 打赏
  • 举报
回复
存储过程里declare exception continue handler

其他的程序里,就捕获异常
Olyra 2011-05-20
  • 打赏
  • 举报
回复
关键是怎么捕获?

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧