在PosgreSQL中创建触发器

时间:2016-09-01 21:54:26

标签: postgresql

所以我找到了这个例子:

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),这不是某些选择的记录,这是什么?

1 个答案:

答案 0 :(得分:0)

new(以及old当它是更新语句时)是您要插入或更新的RECORD。您可以从中获取列并使用它们执行任何操作。很多时候BEFORE INSERT触发检查有效值等。

该函数必须返回与表相同的列的RECORD,如果不应发生插入,则返回NULL(通常用于INSTEAD个触发器)。

insert语句只是一个常规插入,其中一列指定了表,并且值来自新插入的RECORDname

documentation很好地解释了触发器。