首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MySQL触发器调用Java方法

使用MySQL触发器调用Java方法
EN

Stack Overflow用户
提问于 2018-01-03 09:12:11
回答 1查看 855关注 0票数 0

我正在编写一个从MySQL数据库的表中检索数据并在JTable中显示数据的应用程序。每当执行插入/更新/删除操作时,我都希望显示更改。到目前为止,我正在使用一个线程来重复检查information_schema中表"tables“中的属性"UPDATE_TIME”,其中"TABLE_SCHEMA“是我的模式的名称,"TABLE_NAME”是我需要检查的表的名称,但是我觉得这种方法非常耗费资源,因为它每隔200ms就会启动一次查询。我知道这个问题可能已经被问了很多次,但我所能找到的要么是使用Oracle的解决方案,要么是一些过时或不完整的东西,那么有没有办法在MySQL中使用触发器来调用Java方法呢?我在想这样的事情:

代码语言:javascript
复制
void checkTableUpdate() {
    synchronized (tableUpdate) {
        try {
            tableUpdate.wait();
            /**
             * code executed to display the changes
             */
        } catch (InterruptedException e) {
            /**
             * 
             */
        }
    }
}

void notifyTableUpdate() {
    synchronized (tableUpdate) {
        tableUpdate.notify();
    }
}

触发器必须调用notifyTableUpdate()方法。有没有一种方法可以做到这一点,或者不涉及轮询的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-03 09:34:06

MySQL协议(以其当前的形式-不确定X的变化)没有规定服务器向客户端发起数据传输。它纯粹是客户端发出请求-服务器回复类型,所以客户端检测更改的唯一选择就是轮询。

您可以创建一个专用的"events“表,该表将由触发器更新,并时不时地从专用线程或其他地方轮询它。

奇怪的是,Postgresql确实有一个作为LISTEN/NOTIFY命令对实现的客户端通知机制。因此,如果您可以切换到Postgres,那么您的问题就会更容易解决。

https://bugs.mysql.com/bug.php?id=19597 :-)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48069941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档