postgres触发传递给函数的输入

时间:2018-11-15 10:20:09

标签: postgresql

我试图触发一个触发器,当将值放入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在更改之前为旧行提供了特定的属性。如果我对此有误,请告诉我。谢谢

1 个答案:

答案 0 :(得分:0)

doc讲述了触发器中调用的函数:

  

一个用户提供的函数,它声明为不带参数,并且   返回类型的触发器,该触发器在触发器触发时执行。

此功能可以访问OLDNEW对象。您可以修改现有功能:

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();
相关问题