我有一个设置为在某一列更新时触发的延迟
我不确定,但似乎如果在事务期间递增该特定列100次,则触发器会排队并在事务结束时执行100次。
无论我增加该列的次数有多少,我都希望触发器只被调度一次。
有什么办法可以做到这一点吗?或者,如果触发触发器无论是否重复都必须排队,那么我可以在触发器第一次运行时清除此队列吗?
Postgres的版本是9.1。以下是我得到的内容:
AFTER UPDATE
触发器,该列是我用作计数器的整数类型。我不确定,但似乎如果在事务期间递增该特定列100次,则触发器会排队并在事务结束时执行100次。
无论我增加该列的次数有多少,我都希望触发器只被调度一次。
有什么办法可以做到这一点吗?或者,如果触发触发器无论是否重复都必须排队,那么我可以在触发器第一次运行时清除此队列吗?
Postgres的版本是9.1。以下是我得到的内容:
CREATE CONSTRAINT TRIGGER counter_change
AFTER UPDATE OF "Counter" ON "table"
DEFERRABLE INITIALLY DEFERRED
FOR EACH ROW
EXECUTE PROCEDURE counter_change();
CREATE OR REPLACE FUNCTION counter_change()
RETURNS trigger
LANGUAGE plpgsql
AS $$
DECLARE
BEGIN
PERFORM some_expensive_procedure(NEW."id");
RETURN NEW;
END;$$;