所以我找到了这个例子:
create function eager.account_insert() returns trigger
security definer
language plpgsql
as $$
begin
insert into eager.account_balances(name) values(new.name);
return new;
end;
$$;
create trigger account_insert after insert on accounts
for each row execute procedure eager.account_insert();
我无法理解的事情:函数eager.account_insert()
不接受任何参数,但它使用变量new
。它返回它,但不应该返回trigger
?
另外,这个:insert into eager.account_balances(name)
,这不是某些选择的记录,这是什么?
答案 0 :(得分:0)
new
(以及old
当它是更新语句时)是您要插入或更新的RECORD
。您可以从中获取列并使用它们执行任何操作。很多时候BEFORE INSERT
触发检查有效值等。
该函数必须返回与表相同的列的RECORD
,如果不应发生插入,则返回NULL
(通常用于INSTEAD
个触发器)。
insert语句只是一个常规插入,其中一列指定了表,并且值来自新插入的RECORD
列name
。
documentation很好地解释了触发器。