插入表后,在mysql触发器中发送http请求

时间:2014-12-27 06:45:50

标签: php mysql http triggers

我在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中测试过。有没有其他方法可以满足我的要求?请有人帮帮我..

1 个答案:

答案 0 :(得分:2)

虽然技术上可行,但我强烈建议你不要走这条路,原因如下:

  1. 使用UDF本身就存在安全风险。 UDF可供所有数据库用户使用 - 您无法为它们授予EXECUTE权限。

  2. 在触发器中执行任何非事务性操作完全错误。 DML语句所做的数据更改(在您的情况下是更新)可以并将在实际场景中回滚。您将无法撤消您的http电话。

  3. 您延长了插入事务的时间,可能导致其他更新/插入操作的锁定等待超时。

  4. 强烈推荐阅读:


    现在很可能你需要的是一个工作队列,例如beanstalked。使用这样的专用中间件要比使用数据库组织队列要好得多。