java - 更改数据库表时对 JAVA Web 应用程序的提示

标签 java mysql sql quartz-scheduler

我知道很多人只看标题就会打消这个问题,但这对我来说很重要。

我有一个要求,如果数据库中有任何表被更改(我们使用 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 中实现这个?

最佳答案

我的简单解决方案:

  1. 实现每分钟运行一次的 quartz 调度程序作业。请注意,quartz 实际上是一个线程池,因此它取决于您如何使其成本最低。
  2. 在工作中,使用允许您比较列差异的任何机制交叉检查信息模式。希望将其保持在亚秒级...

只是我的两点想法

关于java - 更改数据库表时对 JAVA Web 应用程序的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20658331/

相关文章:

java - AssertJ-Swing 和 Junit 5 支持

php - 统计php mysql中的多级营销(树)记录

mysql - 选择一个值,其中 SUM()

php - 查询返回数据以及来自另一个表的数据

java - 如何在 PDFTextStream 的 setFieldName 中获取文档的文件路径?

java - Spring boot Field 需要一个找不到类型的 bean

java - 我们可以在运行时更改 log4j 的日志记录级别吗

mysql - SQL 仅选择列上具有最大值的行

SQL Server CE : if exist update else insert

mysql - 使用波兰字母订购