触发器中出现的错误

触发器正文中的 SQL 语句在触发器执行期间可能会失败,从而导致错误发生。

更改开始假设在触发器中没有定义处理程序,如果在触发器执行期间触发器主体中的任何SQL语句失败, Db2 将回滚触发SQL语句和被触发SQL语句所做的所有更改。 然而,如果触发器主体执行的操作不在 Db2 的控制范围内,或者与触发器执行所在的 Db2 子系统不在同一承诺协调下,则 Db2 无法撤销这些操作。 Db2 无法控制的外部行为包括:
  • 执行不受RRS提交控制约束的更新
  • 发送电子邮件
更改结束
如果触发器执行的外部操作与触发器执行所在的 Db2 子系统处于相同的提交协调中,并且在触发器执行期间发生错误,则 Db2 会将发出触发语句的应用程序进程置于必须回滚状态。 应用程序必须执行回滚操作,以回滚这些外部操作。 与触发SQL操作处于同一提交协调中的外部操作示例如下:
  • 执行分布式更新操作
  • 从用户定义的函数或存储过程执行外部操作,该操作会影响受RRS提交控制的外部资源管理器。