Postgres中的AFTER触发器会阻止插入/更新吗?

时间:2010-06-29 17:08:12

标签: postgresql triggers blocking

如果我在插入/更新后在PostgreSQL中设置AFTER触发器,那么调用软件是否必须等待触发器完成才能将控制权返回给调用软件?或者触发器会在幕后自行运行吗?

1 个答案:

答案 0 :(得分:14)

是的,因为它是在同一个交易中执行的。如果触发器失败,插入/更新也将失败。只是做一个测试来执行一个失败的查询(选择一个不存在的表),你可以看到事情是如何工作的以及你的应用程序的行为方式。

CREATE OR REPLACE FUNCTION foo() RETURNS TRIGGER
AS
$$
BEGIN
  EXECUTE 'SELECT fail';
END;
$$
LANGUAGE plpgsql;