如何从客户端了解表是否已更新

时间:2014-09-29 08:38:46

标签: c# mysql winforms

我正在构建连接到 MySQL数据库 C#Winforms 客户端。可以从多个用户和计算机访问客户端。我需要一种方法让所有客户端以某种方式通知,只要另一个客户端对数据库内容进行更改,以便在客户端刷新。

因为当用户打开显示数据库内容的表单时,将在运行时获取内容。所以这不是问题。如果进行了更新,则用户将看到它。
我的问题是,如果用户打开了一种数据库内容,另一位用户更改了数据库内容。

我想过设置某种类型的计时器,每分钟都会获得用户当前正在查看的所有数据库内容。但这非常耗时且根本没有效率。 另一个想法是每分钟检查更新,但我不知道如何实现。

有什么建议吗?

有没有办法从客户端检查更新?
 还有其他方法可以执行此操作吗?

1 个答案:

答案 0 :(得分:0)

您可以更改表格,以便在更新时存储时间戳。 例如

CREATE TABLE foo (
  id INT PRIMARY KEY
  x INT,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
                     ON UPDATE CURRENT_TIMESTAMP,
  KEY (updated_at)
);

上面的代码将当前时间戳存储到新行,并在编辑行时将其更改为编辑的时间。通过这种方式,您可以获取数据,在order by模式下对其进行排序(descending)并获取最高记录。这样您就可以获得表格中的最新更新记录。 如果您想了解整个数据库,那么您必须比较每个表的最新更新记录并获取最新的记录。