我一直在尝试编写一个触发器函数,当父进程暂时更改时,该函数会更新子表中的行。 我已阅读Trigger程序文档,但我还没有真正掌握如何构建函数。
这是我尝试过的不起作用......
CREATE FUNCTION myschema.update_child() RETURNS trigger AS
$BODY$
BEGIN
UPDATE myschema.child
set new.number = parent.number
FROM myschema.parent
WHERE id = "id";
RETURN NEW;
END
$BODY$
LANGUAGE plpgsql
然后是触发器
CREATE TRIGGER update_child_after_update
AFTER INSERT OR UPDATE OR DELETE
ON myschema.child
FOR EACH ROW
EXECUTE PROCEDURE myschema.update_child();
有没有人有一些提示?
最好的问候
答案 0 :(得分:3)
您不需要在触发器函数的主体中使用parent
表,因为父表中的值在特殊变量OLD
和{{1 }}。在这种情况下,您只需要NEW
。
如果仅在更新时需要触发器,则定义仅更新触发器:
NEW