由MySQL触发器运行的Java

由MySQL触发器运行的Java,java,mysql,swing,triggers,Java,Mysql,Swing,Triggers,我试图创建一些MySQL代码,从触发器调用Java程序 以下是我到目前为止的情况: CREATE TRIGGER trig_name after insert ON studentinfo FOR EACH ROW BEGIN END 然后,触发器内容将调用Java程序。这可能吗?从SQL数据库调用java方法不是标准功能。Informix DB可以从存储过程调用shell脚本,但我不知道MySQL中有这样的功能(我不是MySQL方面的专家) 最适合所有数据库的方法是使用一个线程并定期轮询

我试图创建一些MySQL代码,从触发器调用Java程序

以下是我到目前为止的情况:

CREATE TRIGGER trig_name after insert ON studentinfo 
FOR EACH ROW
BEGIN

END

然后,触发器内容将调用Java程序。这可能吗?

从SQL数据库调用java方法不是标准功能。Informix DB可以从存储过程调用shell脚本,但我不知道MySQL中有这样的功能(我不是MySQL方面的专家)

最适合所有数据库的方法是使用一个线程并定期轮询数据库以获取新记录

SELECT * FROM studentinfo WHERE id > last_seen_id
或者您可以使用时间戳:

SELECT * FROM studentinfo WHERE create_date >= last_seen_create_date

在这种情况下,您必须过滤从上一次运行中加载的重复行。

直接回答:不,您不能从mysql触发器调用java方法。如果你有一个oracle数据库,你可以,但不是mysql

要想用mysql做你想做的事情,你可以

  • 使更新数据库的代码也通知swing应用程序。或者你可以
  • 使触发器将挂起操作的数据累积到一个单独的表中,您可以定期从swing应用程序读取该表
虽然这不是一个标准功能,但在MySQL中很可能实现。您可以使用“选择…”。。从触发器内部写入OUTFILE语句,以写入命名管道(Windows)或memroy文件系统(Linux)。这两种情况都可以通过Java代码(或任何其他代码)轻松监控。使用这种技术,您将避免轮询,并且由于没有实际的磁盘访问,因此您也将具有良好的性能


实际上,我已经为此编写了一个Java包,所以我100%确信这是可能的,并且性能良好。不幸的是,我不能在这里分享我的成果(我以前的答案被版主删除了),所以你必须自己编写,对不起。

。这在mysql中可能吗@stacker@xyz:不,那是不可能的。MySQL不支持触发器和过程的其他语言。它也不会有任何帮助,因为触发器在数据库服务器上运行,并且无法“调用”您的Swing程序(它在完全不同的机器上运行),您必须阅读并尝试1)2)3)请参阅我的答案以获得一个工作示例