触发器执行时没有任何错误,但会抛出
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'或者用于声明然后使用光标请帮助解决方案具有良好的性能
答案 0 :(得分:1)
FOR EACH STATEMENT不支持NEW和OLD用法,因此只有当前postgres才能通过FOR EACH ROW访问更新/插入/删除的行检查此帖子以获取更多信息How to use 'for statement' triggers in postgres?