java - 持续检查自动增量值是否发生变化的有效方法

标签 java mysql

我正在编写一个 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/

相关文章:

php - 是否存在这样的 SQL 查询?

Java:不打印以特定字符开头的行

java - 为什么我不能在 spring-boot 中使用 apache httpcomponents 对象,即使它列在 MVN 依赖项中?

Java:对列表列表进行排序

java - 非 MVC 应用程序中的 Spring 验证

python - SQLAlchemy 查询结果超时

java - 如何使用反射递归序列化对象?

java - 运行测试时页面对象模型看到空指针异常?

c# - 如何在ASP.NET MVC中从隐藏表单输入DateTime Now到数据库MySQL?

MySQL 加载日期,格式为 mm/dd/yyyy