我有一个运行的Windows服务,它从PostgreSQL的表中读取配置。这些设置在服务启动时只读一次,对于它们的任何更改,需要重新启动服务。我正在寻找C#中的一种机制来监视数据库的任何变化。这样我就可以获取数据库更改的设置。
我正在寻找的一种方法是从PostgreSQL触发器编写/修改文本文件,然后使用FileWatcher更新设置。但也没有成功。
答案 0 :(得分:1)
首先,我通过引用npgsql documentation
创建了一个与命令listen <channel_name>
的永久侦听连接
然后我写了一个触发命令
的触发器 PERFORM pg_notify('<channel_name>', format('Changed: %s ', NEW.column_name));
因此触发器捕获了特定数据库表的任何更改,然后触发器将通知发送到通道并且c#代码已经监听并处理它