我试图从PostgreSQL触发器函数发出通知.我可以成功使用NOTIFY命令,但我没有运气pg_notify.即使我从psql控制台调用pg_notify函数时收到通知,但在从触发器函数调用它时,我从未收到通知.
此版本的触发器功能按预期工作.我有一个听到'mymessage'的Java程序,它收到一个带有'NOTIFY'有效负载的通知.
-- Function: conversation_notify()
-- DROP FUNCTION conversation_notify();
CREATE OR REPLACE FUNCTION conversation_notify()
RETURNS trigger AS
$BODY$
BEGIN
--SELECT pg_notify('mymessage', 'fired by FUNCTION');
NOTIFY mymessage, 'fired by NOTIFY';
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION conversation_notify() OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)
此版本的触发器功能无法按预期工作.唯一的变化是取消注释pg_notify行并注释掉下面的NOTIFY行.(我没有修改LISTENing的Java应用程序.)我希望我的应用程序LISTENing到'mymessage'应该收到'FUNCTION'有效负载的通知.实际行为是在修改相应表后30秒甚至没有收到任何内容.
-- Function: conversation_notify()
-- DROP FUNCTION conversation_notify();
CREATE OR REPLACE FUNCTION conversation_notify()
RETURNS trigger AS
$BODY$
BEGIN
SELECT pg_notify('mymessage', 'fired by FUNCTION');
--NOTIFY mymessage, 'fired by NOTIFY';
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql …Run Code Online (Sandbox Code Playgroud)