触发更新另一个 table

Trigger update another table

我一直在尝试编写一个触发器函数,当父级更改时更新子级 table 中的行已经有一段时间了。 我已经阅读了触发器过程文档,但我还没有真正掌握如何构建函数。

这是我试过的方法,但不起作用...

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();

有人可以提供一些提示吗?
最好的问候

您不需要在触发函数的主体中使用 parent table,因为来自父 table 的值在特殊的函数中可用变量 OLDNEW。在这种情况下,您只需要 NEW

如果您只在更新时需要触发器,那么定义一个仅更新触发器:

CREATE or replace FUNCTION update_child() RETURNS trigger AS
  $BODY$
BEGIN
  UPDATE child
  set number = NEW.number
  WHERE id = NEW.id;
  RETURN NEW;
END
$BODY$
LANGUAGE plpgsql;

CREATE TRIGGER update_child_after_update
AFTER UPDATE 
ON parent
FOR EACH ROW
EXECUTE PROCEDURE update_child();