首页 > 解决方案 > 如何从 pg_notify 获取事件名称

问题描述

我正在使用 pg_channels 从 pg_notify 和 python 获取事件(删除或创建),但我需要设置一个 if 来检查触发的事件是删除还是创建,而不是我可以应用规则但我不知道如何获取事件名称。谢谢你们的帮助。

pcg = pg_channels.connect(host='', database='', user='', password='', port='5432')

# listening an event
pcg.listen('xgracco')

#loop to watch events from posgres pg_notify
for event in pcg.events():
     info = json.loads(event.payload)

我的功能和触发器

create or replace function public.notify() returns  
trigger as $BODY$
begin
if new.tp_status = 'ERRO' then
    perform pg_notify('xgracco', row_to_json(NEW)::text);
end if;
return new;
end
$BODY$
language 'plpgsql';

create trigger after_insert
after insert or update
on "tb_fila" 
for each row 
execute procedure public.notify()

create or replace function public.notify_delete() returns
trigger as $BODY$
begin
if old.tp_status = 'ERRO' then
    perform pg_notify('xgracco', row_to_json(OLD)::text);
end if;
return old;
end
$BODY$
language 'plpgsql';

create trigger before_delete_xgracco
before delete 
on "tb_fila" 
for each row 
execute procedure public.notify_delete()

标签: pg-notify

解决方案


推荐阅读