mysql 触发器 udf_MySQL触发器 – AFTER INSERT触发器UDF sys_exec()问题

问题:我有一张表可以保存某些记录.插入完成后,我想通过

MySQL的sys_ * UDF调用外部程序(php脚本).

现在,问题 – 我已经将记录的ID传递给脚本的触发器.

当我尝试通过脚本提取数据时,我得到0行.

在我自己的测试中,我得出结论,触发器调用php脚本并在实际插入发生之前传递参数,因此我没有得到给定ID的记录.

我在MySQL 5.0.75和5.1.41(Ubuntu OS)上测试了这个.

我可以确认参数在实际插入发生之前传递给脚本,因为我添加了sleep(2);到我的

PHP脚本,我已正确获取数据.

没有睡觉();声明,我收到了给定ID的0条记录.

我的问题是 – 如何解决这个问题,而不必在PHP脚本中硬编码某种延迟?

我没有自由假设2秒(或10秒)将是足够的延迟,所以我希望一切都“自然地”流动,当一个命令完成时 – 另一个命令执行.

我假设如果触发器是AFTER INSERT类型,触发器体内的所有内容都将在MySQL实际插入数据后执行.

表格布局:

CREATE TABLE test (

id int not null auto_increment PRIMARY KEY,

random_data varchar(255) not null

);

触发布局:

DELIMITER $$

CREATE TRIGGER `test_after_insert` AFTER INSERT ON `test`

FOR EACH ROW BEGIN

SET @exec_var = sys_exec(CONCAT('php /var/www/xyz/servers/dispatcher.php ', NEW.id));

END;

$$

DELIMITER ;

免责声明:我知道使用sys_exec函数时的安全问题,我的问题是MySQL没有插入FIRST,然后用必要的参数调用脚本.

如果有人能够解释如何解决这个问题,或者有一种不同的方法,不涉及SELECT INTO OUTFILE和使用FAM – 我将非常感激.提前致谢.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值