我在 PHP 中工作。我必须创建一个 mysql 触发器,它在插入表后触发 http 请求。下面是代码。
DELIMITER @@
CREATE TRIGGER Test_Trigger
AFTER INSERT ON insertsms
FOR EACH ROW
BEGIN
SET @tt_json = (SELECT json_object(id,addtime,title)
FROM insertsms WHERE id = NEW.id LIMIT 1);
SET @tt_resu = (SELECT http_put(CONCAT('--url localhost--')));
END;
@@
DELIMITER ;
但是我遇到了这样的错误
Message: SQLSTATE[42000]: Syntax error or access violation: 1305 FUNCTION emg.json_object does not exist
Message: SQLSTATE[42000]: Syntax error or access violation: 1305 FUNCTION emg.http_put does not exist
如何消除这个错误?我无法下载包含这些功能的支持文件。我已经在本地主机上进行了测试。还有其他方法可以实现我的要求吗?请任何人帮助我..
最佳答案
虽然这在技术上是可行的,但出于以下几个原因,我强烈建议您不要走这条路:
使用 UDF 本身就是一种安全风险。 UDF 对所有数据库用户都可用——您不能为他们授予 EXECUTE 权限。
在触发器中执行任何非事务性操作都是完全错误的。 DML 语句所做的数据更改(在您的情况下是更新)可以并且将在现实世界场景中回滚。您将无法撤消您的 http 调用。
您正在延长插入事务的时间,可能导致其他更新/插入操作的锁定等待超时。
强烈推荐阅读:
现在您很可能需要的是一个工作队列,例如beanstalked .使用这种专门的中间件比用数据库组织队列要好得多。
关于php - 插入表后在mysql触发器中发送http请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27665066/