因此,后终于得到关于PostgreSQL的触发器和功能有点了解,我似乎无法找出什么是错在这里:函数/触发器的返回类型?
我创建一个触发器功能:
CREATE OR REPLACE FUNCTION upd_totaal_telling()
RETURNS trigger AS
$BODY$
BEGIN
UPDATE totaal_telling
SET telling_getal = (SELECT SUM(pers_salaris) FROM personeel)
RETURNING telling_getal;
END;
$BODY$
LANGUAGE PLPGSQL;
然后我创建触发器吧:
CREATE TRIGGER trig_totaal_telling
AFTER INSERT OR UPDATE ON personeel
FOR EACH ROW
EXECUTE PROCEDURE upd_totaal_telling();
但是,当我尝试插入一个值表,我得到这个错误:
ERROR: query has no destination for result data CONTEXT: PL/pgSQL function upd_totaal_telling() line 3 at SQL statement ********** Error **********
ERROR: query has no destination for result data SQL state: 42601 Context: PL/pgSQL function upd_totaal_telling() line 3 at SQL statement
谢谢您的回答。但是,当我删除返回的部分并尝试添加一个值来触发触发器时,我收到另一个错误: 错误:控制到达触发器过程的末尾而没有返回 – Nerotix
此外,在手动中找到了这一点:触发器函数必须返回NULL或者是一个记录/行值,它具有触发器触发的表的结构。 – Nerotix
啊,我的歉意,我想你可以完全省略return语句。返回NULL的正确方法很简单,就是'RETURN NULL;' - 我将用引用更新答案。 – IMSoP