如何在Postgres中使用“ for语句”触发器?

RAF*_*FIQ 1 sql postgresql

如果我们像下面这样编写FOR STATEMENT触发器,我们如何才能仅访问触发器过程/函数中的更新行

CREATE FUNCTION func1()
RETURNS trigger AS $$
BEGIN
    --access only updated/inserted rows here???
    RETURN null;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER trig1
AFTER UPDATE OR DELETE OR INSERT
ON tbl1 FOR STATEMENT
EXECUTE PROCEDURE func1();
Run Code Online (Sandbox Code Playgroud)

我的意思是当有多个行更新一次,如下所示

update tbl1 set col1=1 where col2 in (2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)

小智 5

现在,可以在第10页中的插入记录表中使用标识符:

CREATE TRIGGER transfer_insert
AFTER INSERT ON transfer
REFERENCING NEW TABLE AS inserted
FOR EACH STATEMENT
EXECUTE PROCEDURE check_transfer_balances_to_zero();
Run Code Online (Sandbox Code Playgroud)

摘自pg 10 doc:https : //www.postgresql.org/docs/10/static/sql-createtrigger.html