【问题标题】:Monitor MySQL table for changes within a C# program?监视 MySQL 表以了解 C# 程序中的更改?
【发布时间】:2011-02-10 18:49:23
【问题描述】:

是否可以在 c# 应用程序中监视 mysql 表的更改?我基本上希望在将数据插入表时引发一个事件。我现在唯一能想到的就是每 100 毫秒左右查询一次表。

【问题讨论】:

    标签: c# .net mysql


    【解决方案1】:

    如果应用程序和数据库服务器都在同一台机器上,您可能能够在 MySQL 中设置一个触发器,该触发器在 INSERT、UPDATE 之后写入日志文件,然后创建一个FileSystemWatcher 来监视该日志文件。 FileSystemWatcher 将 fire events when the file is changed 您的应用程序可以做出反应。

    触发器可能如下所示:

    create trigger MyTable_Monitor
    after insert, update on MyTable
    for each row
    begin
    select * from new into outfile "path/to/table.log"
    end
    

    我在上面的代码中看到的一个问题是无法将 outfile 附加到(我能说的最好的),所以如果在一次调用中执行了多个查询(或者甚至多个查询由不同的客户端同时执行),您可能会遇到问题.欢迎提出任何改进建议。

    【讨论】:

    • 谢谢。不幸的是,C# 应用程序可能没有在同一台机器上运行或无法访问日志目录以使用 FileSystemWatcher
    【解决方案2】:

    也许在表中添加插入、更新、删除触发器,以在具有两列的新表中记录行..

    1. 行的 uid 已更改
    2. 插入/更新/删除的更改类型

    然后您访问此表,它会告诉您具体插入、更新、删除了哪些行。

    【讨论】:

      猜你喜欢
      • 2011-04-04
      • 2011-05-03
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      • 2011-02-03
      相关资源
      最近更新 更多