mysql – 添加数据库中的新行时,必须调用外部命令行程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 添加数据库中的新行时,必须调用外部命令行程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1486字,纯文字阅读大概需要3分钟。
内容图文
![mysql – 添加数据库中的新行时,必须调用外部命令行程序](/upload/InfoBanner/zyjiaocheng/901/b004e9c2d1814fa1a58472a63027f05a.jpg)
当一个新行被添加到数据库中的一个表时,MySQL数据库是否可以调用外部exe文件?
我需要监视数据库中的更改,因此在进行相关更改时,我需要在数据库外部执行一些批处理作业.
解决方法:
Chad Birch使用MySQL triggers and a user-defined function时有一个好主意.您可以在MySQL CREATE TRIGGER Syntax参考中找到更多信息.
但是你确定在插入行时需要立即调用可执行文件吗?看起来这种方法很容易失败,因为MySQL可能会同时产生多个可执行文件的实例.如果您的可执行文件失败,那么将不会记录哪些行尚未处理,哪些行尚未处理.如果MySQL正在等待您的可执行文件完成,那么插入行可能会非常慢.此外,如果Chad Birch是正确的,那么将不得不重新编译MySQL,所以听起来很难.
我不是直接从MySQL调用可执行文件,而是使用触发器简单地记录行被INSERTED或UPDATED的事实:在数据库中记录该信息,或者使用现有表中的新列或者使用名为database_changes的全新表.然后创建一个外部程序,定期从数据库中读取信息,处理它,并将其标记为已完成.
您的具体解决方案将取决于外部程序实际需要的参数.
如果您的外部程序需要知道插入了哪一行,那么您的解决方案可能是这样的:创建一个名为database_changes的新表,其中包含字段date,table_name和row_id,对于所有其他表,请按以下方式创建一个触发器:
CREATE TRIGGER `my_trigger`
AFTER INSERT ON `table_name`
FOR EACH ROW BEGIN
INSERT INTO `database_changes` (`date`, `table_name`, `row_id`)
VALUES (NOW(), "table_name", NEW.id)
END;
然后您的批处理脚本可以执行以下操作:
>选择database_changes表中的第一行.
>处理它.
>删除它.
>重复1-3,直到database_changes为空.
使用这种方法,您可以更好地控制数据处理的时间和方式,并且可以轻松检查数据是否实际得到处理(只需检查数据库更改表是否为空).
内容总结
以上是互联网集市为您收集整理的mysql – 添加数据库中的新行时,必须调用外部命令行程序全部内容,希望文章能够帮你解决mysql – 添加数据库中的新行时,必须调用外部命令行程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。