使用 MySQL 触发器调用 Java 方法
Call a Java method using MySQL triggers
我正在编写一个应用程序,它从 MySQL 数据库中的 table 检索数据并将其显示在 JTable 中。每当进行 insert/update/delete 操作时,我都希望显示更改。截至目前,我正在使用一个线程,该线程重复检查 table "tables" 中 information_schema 中的属性 "UPDATE_TIME",其中 "TABLE_SCHEMA" 是我的架构名称,并且"TABLE_NAME" 是我需要检查的 table 的名称,但是我觉得这种方法非常耗费资源,因为它每 200 毫秒启动一次查询。我知道这可能已经被问过很多次了,但我能找到的要么是使用 Oracle 的解决方案,要么是一些过时或不完整的东西,所以有什么方法可以使用 MySQL 中的触发器调用 Java 方法?我在想这样的事情:
void checkTableUpdate() {
synchronized (tableUpdate) {
try {
tableUpdate.wait();
/**
* code executed to display the changes
*/
} catch (InterruptedException e) {
/**
*
*/
}
}
}
void notifyTableUpdate() {
synchronized (tableUpdate) {
tableUpdate.notify();
}
}
触发器必须调用 notifyTableUpdate() 方法。有没有办法完成这个或不涉及轮询的解决方案?
MySQL 协议(以其当前形式 - 不确定 X 变体)没有规定服务器启动到客户端的数据传输。它纯粹是客户端发出请求 - 服务器回复类型,因此客户端检测更改的唯一选择是通过轮询。
您可以创建一个专用的 "events" table,它会被触发器更新并时不时从专用线程或其他线程中轮询它。
奇怪的是,Postgresql 确实有一个作为 LISTEN
/NOTIFY
命令对实现的客户端通知机制。因此,如果您可以切换到 Postgres,您的问题将更容易解决。
我在使用 java 的项目中也有类似的需求。作为我研究的结果,我使用 postgre 解决了我的问题,希望这篇文档对你有帮助
https://jdbc.postgresql.org/documentation/head/listennotify.html
我正在编写一个应用程序,它从 MySQL 数据库中的 table 检索数据并将其显示在 JTable 中。每当进行 insert/update/delete 操作时,我都希望显示更改。截至目前,我正在使用一个线程,该线程重复检查 table "tables" 中 information_schema 中的属性 "UPDATE_TIME",其中 "TABLE_SCHEMA" 是我的架构名称,并且"TABLE_NAME" 是我需要检查的 table 的名称,但是我觉得这种方法非常耗费资源,因为它每 200 毫秒启动一次查询。我知道这可能已经被问过很多次了,但我能找到的要么是使用 Oracle 的解决方案,要么是一些过时或不完整的东西,所以有什么方法可以使用 MySQL 中的触发器调用 Java 方法?我在想这样的事情:
void checkTableUpdate() {
synchronized (tableUpdate) {
try {
tableUpdate.wait();
/**
* code executed to display the changes
*/
} catch (InterruptedException e) {
/**
*
*/
}
}
}
void notifyTableUpdate() {
synchronized (tableUpdate) {
tableUpdate.notify();
}
}
触发器必须调用 notifyTableUpdate() 方法。有没有办法完成这个或不涉及轮询的解决方案?
MySQL 协议(以其当前形式 - 不确定 X 变体)没有规定服务器启动到客户端的数据传输。它纯粹是客户端发出请求 - 服务器回复类型,因此客户端检测更改的唯一选择是通过轮询。
您可以创建一个专用的 "events" table,它会被触发器更新并时不时从专用线程或其他线程中轮询它。
奇怪的是,Postgresql 确实有一个作为 LISTEN
/NOTIFY
命令对实现的客户端通知机制。因此,如果您可以切换到 Postgres,您的问题将更容易解决。
我在使用 java 的项目中也有类似的需求。作为我研究的结果,我使用 postgre 解决了我的问题,希望这篇文档对你有帮助 https://jdbc.postgresql.org/documentation/head/listennotify.html