我有一个通知功能并触发如下
这里我要在通知listerner_to_insert_code(resVal)
之前插入记录
CREATE OR REPLACE FUNCTION public.codes_notify_trigger()
RETURNS trigger AS
$BODY$
DECLARE
resVal text;
BEGIN
resVal := row_to_json(NEW);
select listerner_to_insert_code(resVal);
PERFORM pg_notify('code_channel', resVal::text);
RETURN new;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
CREATE TRIGGER codeInsertTrigger
AFTER INSERT OR UPDATE
ON public.codings
FOR EACH ROW
EXECUTE PROCEDURE public.codes_notify_trigger();
然后我看不到有效载荷
当我尝试
LISTEN code_channel
但是如果我移除select listerner_to_insert_code(resVal)
在下面它会显示有效载荷
CREATE OR REPLACE FUNCTION public.codes_notify_trigger()
RETURNS trigger AS
$BODY$
DECLARE
resVal text;
BEGIN
resVal := row_to_json(NEW);
PERFORM pg_notify('code_channel', resVal::text);
RETURN new;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
但是我想在LISTEN之后插入记录。
我该如何实现?
答案 0 :(得分:1)
您遇到错误query has no destination for result data
。检查您的日志以确认。
在PL / pgSQL代码中使用SELECT时,您需要对返回的数据执行某些操作,例如将其插入表或变量中。
如果您不想对返回的数据做任何事情,请改用PERFORM
。
PERFORM listerner_to_insert_code(resVal);