我正在编写一个 Java 程序,它需要继续检查给定数据库表的自动增量值是否已更改。目前,该程序通过在单独的线程上无限循环中查询数据库来实现这一点。
public class StackOverflow implements Runnable {
@Override
public void run()
{
while(true)
{
// Assume that 'currentMessageID' has already been declared as type integer
// and that 'getLatestMessageID()' queries the database.
if(currentMessageID < queryHandler.getLatestMessageID())
{
int latestMessageID = queryHandler.getLatestMessageID();
for(int x = ajaxChat.currentMessageID + 1; x <= latestMessageID; x++)
{
// Do something when the auto increment value is greater than the last
// known auto increment value.
}
}
}
}
}
虽然这工作得很好,但它给数据库服务器带来了很大的压力,因为
SELECT `auto_increment` FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'SOrocks'
被一遍又一遍地调用。有什么方法可以让我观察自动增量值的变化,而无需一遍又一遍地使用相同的查询来攻击数据库服务器?
最佳答案
不幸的是,如果你只能从应用程序端工作,轮询数据库的线程是我想到的唯一解决方案但是,如果你也可以更改数据库端,你总是可以在数据库上触发以调用您的 java 方法 ( example with Oracle )。
关于java - 持续检查自动增量值是否发生变化的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36227845/