MySQL在触发器中插入json类型的多个变量

时间:2015-12-23 03:42:42

标签: mysql json

我使用MySQL 5.7.9因此它支持内部JSON类型。我在插入后创建了一个'触发器将相关数据从A表插入到B表中,该相对数据是表A中的JSON格式数据。

我可以在while循环中分别解析并将该数据插入到B中。 我的问题是如何使用插入语句来插入事件,例如插入值(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 ???; 

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

2 个答案:

答案 0 :(得分:0)

以下是example in W3schools您可以为自己的

使用相同的示例

答案 1 :(得分:0)

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

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

我还没有尝试过!

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