代码之家  ›  专栏  ›  技术社区  ›  Diogo Silva

如何从pg_notify获取事件名

  •  1
  • Diogo Silva  · 技术社区  · 7 年前

    我正在使用pg_channels从python的pg_notify中获取事件(delete或create),但我需要设置一个if来检查触发的事件是否是delete或create,这样我就可以应用规则,但我不知道如何获取事件名。 谢谢你们的帮助。

    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()
    
    0 回复  |  直到 7 年前
    推荐文章