在C#程序中监控MySQL表的更改?

9

在C#应用程序中,监视MySQL表的更改是否可能?我基本上希望在数据插入表中时引发事件。目前,我能想到的唯一方法是每隔100毫秒查询一次该表。

2个回答

3
如果应用程序和数据库服务器在同一台机器上,您可能可以在MySQL中设置触发器,在插入、更新后将内容写入日志文件,然后创建一个FileSystemWatcher来监视该日志文件。FileSystemWatcher会在文件更改时触发事件,您的应用程序可以对此做出反应。
触发器可能看起来像这样:
create trigger MyTable_Monitor
after insert, update on MyTable
for each row
begin
select * from new into outfile "path/to/table.log"
end

我看到上面的代码存在一个问题,即无法将outfile追加到(据我所知),因此如果在一个调用中执行多个查询(甚至是由不同客户端同时执行多个查询),则可能会遇到问题。欢迎提出改进建议。

1
谢谢。不幸的是,C#应用程序可能无法在同一台机器上运行,也无法访问日志目录,以便使用FileSystemWatcher。 - Brian

2
也许可以在表中添加Insert、Update、Delete触发器,将行记录到一个有两列的新表中。
1.已更改行的uid 2.更改类型Insert/Update/Delete 然后您可以访问此表格,以便查看具体哪些行被插入、更新或删除。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接