MySQL版本:5.1.73 数据库客户端版本:libmysql - 5.1.73
我试图检查过去一小时内是否存在NEW.src,如果没有,则执行sys_exec udf。
我在mysql中有以下触发器。由于这是一个插入后触发器,我的IF条件将检查最后一小时内是否只有一个值,然后继续sys_exec语句。
BEGIN
SET @numofcalls = (SELECT count(src) FROM `cdr` WHERE calldate >= DATE_SUB(NOW(),INTERVAL 1 HOUR) AND src = NEW.src);
IF (numofcalls = 1) then
SET @missed_call = sys_exec(CONCAT('/usr/bin/php /var/lib/asterisk/agi-bin/api_pbx/call_api.php ', NEW.src));
END IF;
END
保存触发器时没有语法错误。插入新记录时,sys_exec语句似乎无法运行并退出IF条件。
有人可以建议我在这里做错了吗。
答案 0 :(得分:1)
我建议您不要从MySQL触发器执行php程序。
原因:
相反,我建议您不要使用触发器,而是插入数据并提交事务,然后使用应用程序代码检查是否应该运行调用,然后从应用程序执行它。换句话说,不要执行在数据库之外具有效果的代码。