【问题标题】:MySQL insert multiple variables from a json type in a triggerMySQL在触发器中插入来自json类型的多个变量
【发布时间】:2015-12-23 03:42:42
【问题描述】:

我使用MySQL 5.7.9,所以它支持内部 JSON 类型。我创建了一个“插入后”触发器来将 A 表中的相关数据插入到 B 表中,此相关数据是 A 表中的 JSON 格式数据。

我可以稍后将这些数据单独解析并插入 B 中环形。 我的问题是如何使用插入语句(如 insert into values (x,x),(y,y)...)来执行此插入事件,因为它的效率很高。

 set @jsonO := CAST(NEW.targets AS JSON);
 set @targetLen := JSON_LENGTH(@jsonO);
 set valueStr = NULL;
 set target = 0;
 while target < @targetLen do
   set valueStr = CONCAT_WS(',',valueStr,CONCAT('(',JSON_EXTRACT(NEW.targets,CONCAT('$[',target,']')) ,NEW.id,')'));
   #insert into user_info(userid,infoid) values(JSON_EXTRACT(NEW.targets,CONCAT('$[',target,']')),NEW.id);
   #!!! INSERT INTO SINGLE ROW IS OK BUT IS INEFFICIENCY
   set target = target + 1;
 end while;
 insert into user_info(userid,infoid) values ???; 

我的问题是如何使用变量一次插入多行。

【问题讨论】:

    标签: mysql json


    【解决方案1】:

    这是example in W3schools,您可以自己使用相同的示例

    【讨论】:

    • 谢谢。我认为 MySQLLi 是 PHP 和 mysql 之间的连接器库。我想知道如何在触发器中实现这一点,而不是使用任何语言,如 PHP、Java、Ruby 或其他语言。实际上,我想知道是否有一种方法可以使用变量来替换插入语句中的整个“值”部分。
    【解决方案2】:

    有点晚了,但是使用准备好的语句呢?

    在循环中构建查询字符串(准备阶段),并在循环之后执行。

    我还没试过!

    https://dev.mysql.com/doc/refman/5.7/en/sql-prepared-statements.html

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多