2012-05-23 38 views
6

一个AFTER INSERT触发器(写在pl/PGsql中的函数)会在一个单独的事务中触发吗?AFTER INSERT触发器在单独的事务中?

我担心的是如果触发器遇到某种异常。
触发器是否可以回滚而原始插入件不受影响?

+1

单独的事务是否能够独立于主事务回滚? – wildplasser

回答

13

所有PostgreSQL触发器都在与触发它们的事务处理相同的事务中执行。

编辑:您还可以使用LISTEN + NOTIFY从您的触发将消息发送到执行交易以外的代码。在这种情况下,消息只会在成功提交的时候传递。监听器中的错误不会回滚触发事务。

6

触发程序在相同交易中作为关联的触发事件运行。但是触发程序的影响可以分开回滚。

您必须将exception handling添加到后触发器。