2014-09-29 109 views
0

我正在建立一个C#Winforms客户端连接到一个MySQL数据库。客户端可以从多个用户和计算机访问。我需要一种方式让所有客户端在不知何故被通知时,只要另一个客户端对数据库内容进行更改,以便在客户端进行刷新。如何从客户端知道表是否已更新

由于用户打开显示数据库内容的表单时,会在运行时提取内容。所以这不是问题。如果更新完成,用户将看到它。
我的问题是,如果用户有一种数据库内容的形式打开,另一个用户更改数据库内容。

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

有什么建议吗?

有没有办法从客户端获取检查更新?
是否有任何其他方式来执行此操作?

+0

可能重复[如何知道MySQL表最后更新时间?](http://stackoverflow.com/questions/307438/how-can-i-tell-when-a-mysql-table-was -last-updated) – Kami 2014-09-29 08:46:43

+0

@Kami我真的搜索过这个答案并没有出现在搜索结果中......我会测试它,看看它是否有效 – 2014-09-29 08:50:08

+0

链接的问题可能会帮助您确定一个表是否发生了变化,在单行上看起来是不可能的。 – Kami 2014-09-29 08:53:18

回答

0

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

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

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

相关问题