gpt4 book ai didi

postgresql - 在postgres中的触发器内部调用具有 bool 返回值的函数

转载 作者:行者123 更新时间:2023-11-29 11:45:36 25 4
gpt4 key购买 nike

我正在尝试在 postgres 的触发器中调用一个函数。基本上我有一个功能,

c.check_level(bigint, integer)
which returns a boolean value.

I would like to call this function inside of a trigger as follows:

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 在单独运行时可以正常工作。

最佳答案

改变

select * from c.check_category_level(parent_id, level) as result;

进入:

SELECT c.check_category_level(parent_id, level) INTO result;

关于postgresql - 在postgres中的触发器内部调用具有 bool 返回值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20351010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com