【问题标题】:Is it possible to trigger a script or program if any data is updated in a database, like MySQL?如果数据库(如 MySQL)中的任何数据更新,是否可以触发脚本或程序?
【发布时间】:2018-12-08 01:12:11
【问题描述】:
它不一定是数据库内的触发器。我只是想知道我应该如何设计它,以便在 MySQL 或 SQL server 内部进行更改时,可以触发一些脚本。
【问题讨论】:
标签:
python
mysql
sql-server
【解决方案1】:
一种方法是在数据库中最后更新的行上保留一个计数器,然后您需要通过 python 在短时间内轮询(检查)数据库以获取新记录。
如果计数器中的值增加,那么您可以使用subprocess 模块来调用另一个 Python 脚本。
【解决方案2】:
可以从 MySql 触发器执行外部脚本,但我从未使用过它,也不知道这样的事情的含义。
MySql 提供了一种方法来实现你自己的函数,它被称为User Defined Functions。有了这个,您可以定义自己的函数并从 MySql 事件中调用它们。需要按照MySql提供的接口在C程序中编写自己的逻辑。
幸运的是,有人已经做了一个库来从 MySql 调用外部程序:LIB_MYSQLUDF_SYS。安装后,以下触发器应该可以工作:
CREATE TRIGGER Test_Trigger
AFTER INSERT ON MyTable
FOR EACH ROW
BEGIN
DECLARE cmd CHAR(255);
DECLARE result int(10);
SET cmd=CONCAT('/YOUR_SCRIPT');
SET result = sys_exec(cmd);
END;