【发布时间】:2013-12-18 12:33:23
【问题描述】:
我知道很多人会通过看标题来解决这个问题,但这对我来说很重要。
我有一个要求,我们的 Java 应用程序应该知道 DB 中是否有任何表被更改(我们使用 mysql。)。我现在能想到的最好的办法是,我写了一个触发器,如果表“x”被更改,那么我在表“Y”中插入一条记录,说明表“X”被更改。
现在,在我的 Java Web 应用程序中,我正在考虑通过 Quartz 调度程序每分钟运行一个线程来检查表 'y' 中是否有任何新记录,这样我可以发现表 'X' 已更改.
这里是我需要建议的地方。 1)如何编写在特定表被更改时触发的sql触发器? 2) 我的老板告诉我,每分钟运行一个线程是一项需要考虑的昂贵操作。
除了运行线程来查找数据库中的表是否发生更改之外,还有其他选择吗?
我真的需要为这个问题找到任何解决方案。感谢您的帮助。
更新:
我有两个 Web 应用程序,WA1 和 WA2,它们共享同一个数据库,比如 DBS。如果用户在 WA2 中执行操作,则 DBS 表将被更改(添加新列)。所以,我的 WA1 应该知道在 WA2 中执行了一个操作。我想到了我上面提到的两点。有没有更好的方法来做到这一点?
如果有一个表说 mytbl 被更改,任何人都可以给我一个执行的 mysql 触发器吗?
我一直听说 Java Stored Procedures and Triggers 和 UTL_HTTP.REQUEST 但它是针对 Oracle 的。有没有办法在 MySQL 中实现这一点?
【问题讨论】:
-
Altered 是否意味着表结构已更改,即添加了新列。还是您的意思是新条目已添加到表中
-
通过更改,我的意思是,添加了新列。我不想考虑列是否被修改或删除。
标签: java mysql sql quartz-scheduler