看着一个表在MySQL中的更改吗?

时间:2020-03-06 15:04:46  来源:igfitidea点击:

除了每隔n个滴答时间从表中进行选择之外,还有没有更好的方法来监视表中的新条目?

我有一个表,该表经常有外部程序更新,并且客户可以在新数据到达时对其进行监视,如何在不必设置固定时间段的可重复选择语句的情况下做到这一点?

解决方案

如果我们足够了解SQL,则可以编写触发器和警报。

这是我的工作:
我已经为该表设置了一些触发器(插入,删除,更新),并且这些触发器在另一个表中增加了一个计数器。我的数据库访问代码保留一个本地计数器,并将其与返回值进行比较,最终将布尔值发送回调用方,并回答问题IsDataCurrent()。

我们的使用该数据库访问代码的程序会轮询或者按要求对其进行检查,然后进行适当的调用以使自己保持最新状态。

我敢肯定还有其他方法可以解决这个问题。不过,对我来说效果很好。

这只是方法的一个小改进。在要监视的表上编写触发器以更新Last_Changed表。

在MySQL中,没有什么比轮询更好的方法了(虽然我们可以创建一个特定的表来简化轮询),但是在其他数据库中,触发器可能会对数据库外部产生影响。在MySQL中,触发器只能在数据库本身内部做事(例如,填充辅助表)。

另一种类似的方法是添加

add column Last_Modified TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP

到每个表,并在我们选择的查询前添加前缀,以将上次请求的日期/时间与max(Last_Modified)进行比较。

数据库通常是拉动源,而不是推动源,因此无论如何,我们仍然需要以编程方式探测更改。