如何使用 golang 捕获新的 postgreSQL 记录的事件

Mit*_*tch 6 sql postgresql notifications go pg

我有一个连接到数据库并可以从中获取数据的脚本,当任何新记录添加到数据库表中时,我可以以某种方式让它通知我吗

Fer*_*lus 7

您可以使用LISTEN/NOTIFYPostgresql 的功能。

使用"github.com/lib/pq",您可以轻松获取通知事件并对新的数据库事件做出反应。

这是go 实现的一个示例。


Mit*_*tch 7

使用 sql 触发器和go-pg库解决了这个问题:

  1. 创建名为 的 sql 函数insert_test_func,执行以下INSERT操作:

    PERFORM pg_notify('mychan', 'Message');
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建执行 func 的触发器:

    create trigger check_insert 
    before insert or update on *my_table_name*
    for each row 
    execute procedure insert_test_func();
    
    Run Code Online (Sandbox Code Playgroud)
  3. 执行这个触发器

  4. with github.com/go-pg/pg,连接到 DB 并pg.Listen()监听该频道'Message'。