MySQL在触发器中插入json类型中的多个变量
我使用的是MySQL在触发器中插入json类型中的多个变量,mysql,json,Mysql,Json,我使用的是MySQL 5.7.9,因此它支持内部JSON类型。我创建了一个“插入后”触发器,将相对数据从一个表插入到B表中,该相对数据是表A中的JSON格式数据。我可以在while循环中分别解析该数据并将其插入B。 我的问题是如何使用insert语句(如insert into values(x,x),(y,y)…)来执行此insert事件。。。因为它是高效率的 set @jsonO := CAST(NEW.targets AS JSON); set @targetLen := JSON_LE
MySQL 5.7.9
,因此它支持内部JSON类型。我创建了一个“插入后”触发器,将相对数据从一个表插入到B表中,该相对数据是表A中的JSON格式数据。我可以在while循环中分别解析该数据并将其插入B。 我的问题是如何使用insert语句(如insert into values(x,x),(y,y)…)来执行此insert事件。。。因为它是高效率的
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 ???;
set@jsonO:=CAST(NEW.targets为JSON);
设置@targetLen:=JSON_长度(@jsonO);
设置valueStr=NULL;
设定目标=0;
而target<@targetLen do
设置valueStr=CONCAT_-WS(',',valueStr,CONCAT('(',JSON_-EXTRACT(NEW.targets,CONCAT('$[',target']),NEW.id'));
#在user_info(userid,infoid)值(JSON_EXTRACT(NEW.targets,CONCAT(“$[”,target,”])、NEW.id)中插入;
#!!! 插入到单行是可以的,但效率低下
设定目标=目标+1;
结束时;
插入用户信息(userid,infoid)值???;
我的问题是如何使用一个变量一次插入多行。下面是一个示例,您可以将相同的示例用于自己的有点晚了,但是使用prepared语句怎么样 在循环中构建查询字符串(准备阶段),并在循环后执行 我还没试过
谢谢。我认为MySQLLi是PHP和mysql之间的连接器库。我想知道如何在触发器中实现这一点,而不是使用PHP、Java、Ruby或其他任何语言。实际上,我想知道是否有一种方法可以使用变量替换insert语句中的整个“values”部分。