触发器更新另一个表

时间:2015-10-09 09:40:56

标签: postgresql triggers plpgsql

我一直在尝试编写一个触发器函数,当父进程暂时更改时,该函数会更新子表中的行。 我已阅读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();

有没有人有一些提示?
最好的问候

1 个答案:

答案 0 :(得分:3)

您不需要在触发器函数的主体中使用parent表,因为父表中的值在特殊变量OLD和{{1 }}。在这种情况下,您只需要NEW

如果仅在更新时需要触发器,则定义仅更新触发器:

NEW