插入触发器上不存在Postgres错误关系“new”

时间:2014-03-20 08:09:21

标签: sql postgresql

触发器执行时没有任何错误,但会抛出

ERROR:  relation "new" does not exist

将单行插入tbl1

CREATE OR REPLACE FUNCTION update_tbl1() 
    RETURNS TRIGGER AS
    $BODY$ DECLARE
DECLARE no_of_rows INT;
BEGIN
    SELECT COUNT(*) as no_of_rows FROM NEW; --error location
         ...
         ...
    COMMIT TRANSACTION
;
END; 
 $BODY$ LANGUAGE plpgsql;
CREATE TRIGGER update_tbl2 AFTER INSERT ON tbl1
     EXECUTE PROCEDURE update_tbl1();

我无法使用NEW和OLD在postgres中引用INSERTED,DELETED(SQL SERVER)行,我感谢任何帮助。

我需要更新类似于

的表格
Table-Bill
item  cost  subtotal
itm1  1     1
itm2  5     6
itm3  4     10
itm4  3     13

我的输入是' item'和'成本'列,触发器需要更新'小计'到目前为止所有项目的总和,我不确定是否使用' FOR EACH ROW'或者用于声明然后使用光标请帮助解决方案具有良好的性能

1 个答案:

答案 0 :(得分:1)

FOR EACH STATEMENT不支持NEW和OLD用法,因此只有当前postgres才能通过FOR EACH ROW访问更新/插入/删除的行检查此帖子以获取更多信息How to use 'for statement' triggers in postgres?