我试图在postgres中调用触发器内的函数。基本上我有一个功能,
c.check_level(bigint, integer)返回一个布尔值。
我想在触发器中调用此函数,如下所示:
CREATE OR REPLACE FUNCTION c.check_level_tg()
RETURNS trigger AS
$BODY$
DECLARE
parent_id int8;
level int;
result bool;
begin
parent_id := NEW.fk_parent;
level := NEW.level;
select * from c.check_category_level(parent_id, level) as result;
if (result) then
return (NEW);
else
return(NULL);
end if;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION c.check_category_level_tg()
OWNER TO postgres;
当我尝试将数据放入此触发器所在的表中时,出现错误: “错误:查询没有结果数据的目的地提示:如果要丢弃SELECT的结果,请改用PERFORM。语境:PL / pgSQL函数”。
单独运行时,函数c.check_level可以正常工作。
答案 0 :(得分:3)
更改
select * from c.check_category_level(parent_id, level) as result;
成:
SELECT c.check_category_level(parent_id, level) INTO result;