是的,使用MySQL 用户定义函数(请参阅MySQL 5.5 常见问题解答:触发器)并安装lib_mysqludf_sys
然后,例如,您可以编写自己的触发器来调用 sys_exec,如下所示:
delimiter |
CREATE TRIGGER testtrigger BEFORE UPDATE ON T1
FOR EACH ROW BEGIN
DECLARE result int(10);
IF NEW.Flag <> OLD.Flag THEN
SET result = sys_exec('/path/to/javabin -jar your.jar');
-- other kind of works and checks...
END IF;
END;
|
Run Code Online (Sandbox Code Playgroud)
在result包含外部程序的退出代码
这个库中还有其他有用的函数:
更多信息在这里
在开发环境中尝试一下,然后...
在决定是否需要此功能时要非常小心。UDF 可供所有数据库用户使用 - 您不能为其授予 EXECUTE 权限。由于传递给的命令字符串
sys_exec几乎可以做任何事情,因此公开该函数会带来非常真实的 安全隐患。
但无论如何,我同意 Remus Rusanu 的提议
我知道这篇文章已经很旧了,很抱歉捡起来,但我最近有同样的要求,所以我创建了一个 MySQL UDF,它使用 JNI 从 MySQL 触发器中调用 Java 代码。我将其发布为未来类似请求的参考。我已经检查了 bitbucket 中的代码。你可以从这里下载它:
MySQLUDFJavaLauncher,这里也是说明的链接。
也许这会帮助其他人。
| 归档时间: |
|
| 查看次数: |
33985 次 |
| 最近记录: |