我试图触发一个触发器,当将值放入table1时,将其复制到table2中。我有以下功能可以正常工作:
Create function func1(a integer) returns void
Language SQL as $$
insert into table2 values (a);$$;
这是触发器(它不起作用):
Create trigger trig1
Before update on table1
For each row
Execute function func1(old.attr1)
我正在尝试遵循this文档。这是我特别关注的部分:
CREATE TRIGGER log_update
AFTER UPDATE ON accounts
FOR EACH ROW
WHEN (OLD.* IS DISTINCT FROM NEW.*)
EXECUTE PROCEDURE log_account_update();
我认为old.attribute在更改之前为旧行提供了特定的属性。如果我对此有误,请告诉我。谢谢
答案 0 :(得分:0)
doc讲述了触发器中调用的函数:
一个用户提供的函数,它声明为不带参数,并且 返回类型的触发器,该触发器在触发器触发时执行。
此功能可以访问OLD
和NEW
对象。您可以修改现有功能:
Create function func1() RETURNS trigger
as $$
BEGIN
insert into table2 values (OLD.attr1);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
Create trigger trig1
Before update on table1
For each row
Execute function func1();