由MySQL触发器运行的Java

问题描述 投票:7回答:3

我正在尝试创建一些MySQL代码,这些代码将从触发器中调用Java程序。

这是我到目前为止的内容:

CREATE TRIGGER trig_name after insert ON studentinfo 
FOR EACH ROW
BEGIN

END

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

java mysql swing triggers
3个回答
6
投票

直接回答:不,您不能从mysql触发器调用Java方法。如果您有oracle数据库,则可以,但没有mysql。

要做你想用mysql做的事就可以

  • 使更新数据库的代码也通知swing应用程序。或者你可以
  • 使触发器在单独的表中累积有关挂起操作的数据,您可以从swing应用程序定期读取该表。

10
投票

尽管不是标准功能,但使用MySQL完全可以实现。您可以从触发器内部使用SELECT .. INTO OUTFILE语句来写入命名管道(Windows)或内存文件系统(Linux)。可以通过Java代码(或与此相关的任何其他代码)轻松监视这两个代码。使用此技术,您将避免轮询,并且因为没有实际的磁盘访问发生,所以您将具有良好的性能。

我实际上已经为此编写了一个Java程序包,因此我100%确信这是可能的并且表现良好。不幸的是,我不允许在这里分享我的努力(主持人删除了我以前的答案),所以您必须自己编写代码,对不起。


1
投票

从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

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

© www.soinside.com 2019 - 2024. All rights reserved.