我在PHP工作。我必须创建一个mysql触发器,在插入table.Below之后触发一个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 ;
但是我收到了像
这样的错误消息:SQLSTATE [42000]:语法错误或访问冲突:1305功能emg.json_object不存在
消息:SQLSTATE [42000]:语法错误或访问冲突:1305功能emg.http_put不存在
如何删除此错误?我无法下载包含这些功能的支持文件。我已在localhost中测试过。有没有其他方法可以满足我的要求?请有人帮帮我..
答案 0 :(得分:2)
虽然技术上可行,但我强烈建议你不要走这条路,原因如下:
使用UDF本身就存在安全风险。 UDF可供所有数据库用户使用 - 您无法为它们授予EXECUTE权限。
在触发器中执行任何非事务性操作完全错误。 DML语句所做的数据更改(在您的情况下是更新)可以并将在实际场景中回滚。您将无法撤消您的http电话。
您延长了插入事务的时间,可能导致其他更新/插入操作的锁定等待超时。
强烈推荐阅读:
现在很可能你需要的是一个工作队列,例如beanstalked。使用这样的专用中间件要比使用数据库组织队列要好得多。