我知道很多人只看标题就会打消这个问题,但这对我来说很重要。
我有一个要求,如果数据库中有任何表被更改(我们使用 mysql),我们的 Java 应用程序应该知道。我现在能想到的最好的办法是,我编写一个触发器,如果表“x”被更改,那么我将一条记录插入到表“Y”中,说明表“X”已更改。
现在,在我的 java web 应用程序中,我正在考虑通过 Quartz 调度程序每分钟运行一个线程来检查表“y”中是否有任何新记录,这样我就可以发现表“X”已更改.
这是我需要建议的地方。 1)如何编写在更改特定表时触发的 sql 触发器? 2) 我的老板告诉我,每分钟运行一个线程是一项需要考虑的昂贵操作。
除了运行线程来查找数据库中的表是否发生更改之外,还有其他替代方法吗?
我真的需要找到解决这个问题的办法。感谢您的帮助。
更新:
我有两个 Web 应用程序,比如 WA1 和 WA2,它们共享同一个数据库,比如 DBS。如果用户在 WA2 中执行操作,则 DBS 表将被更改(添加新列)。所以,我的 WA1 应该知道在 WA2 中执行了一个操作。我想遵循我上面提到的两点。有没有更好的方法来做到这一点?
谁能给我一个 mysql 触发器,如果有一个表说 mytbl 被更改,它就会被执行?
我一直听说 Java Stored Procedures and Triggers和 UTL_HTTP.REQUEST 但它适用于 Oracle。无论如何在 MySQL 中实现这个?
最佳答案
我的简单解决方案:
- 实现每分钟运行一次的 quartz 调度程序作业。请注意,quartz 实际上是一个线程池,因此它取决于您如何使其成本最低。
- 在工作中,使用允许您比较列差异的任何机制交叉检查信息模式。希望将其保持在亚秒级...
只是我的两点想法
关于java - 更改数据库表时对 JAVA Web 应用程序的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20658331/