如何在MySQL中从触发器插入多条记录
我是MySQL新手。 我想创建一个触发器,在将一条记录插入如何在MySQL中从触发器插入多条记录,mysql,triggers,insert,Mysql,Triggers,Insert,我是MySQL新手。 我想创建一个触发器,在将一条记录插入表a后,将多条记录插入表B 在A中插入的记录有一个字段NUM(键入INT(4)),我想在B中插入值从X+1到NUM的记录,其中X是B中的最高数字。我知道NUM在B中不存在,因为INSERT正在使用IF EXISTS 我尝试使用WHILE循环,但出现语法错误-看起来MySQL不允许触发器中的WHILE 我成功地插入了一条值为NUM的记录,但我不知道如何插入所有其他记录。我发现我的问题主要是由于处理全局变量的语法,而不是在触发器内创建集合。
表a
后,将多条记录插入表B
在A
中插入的记录有一个字段NUM
(键入INT(4)
),我想在B
中插入值从X+1
到NUM
的记录,其中X
是B
中的最高数字。我知道NUM
在B
中不存在,因为INSERT
正在使用IF EXISTS
我尝试使用WHILE
循环,但出现语法错误-看起来MySQL不允许触发器中的WHILE
我成功地插入了一条值为
NUM
的记录,但我不知道如何插入所有其他记录。我发现我的问题主要是由于处理全局变量的语法,而不是在触发器内创建集合。
下面是我想要的代码:
--完全触发器DDL语句
--注意:只允许CREATE触发器语句
分隔符$$
使用q
$$
创造
定义器=root
@localhost
触发q
事件\u AUPD
在q
事件插入后
每行
--编辑此行下方的触发器主体代码。不要编辑此行上方的行
开始
声明done INT DEFAULT FALSE;
声明未找到的继续处理程序SET done=TRUE
select LastNumberWaiting from A where
institution = new.institution and
branch = new.branch and
idQueue = new.queue into @ids;
ins_loop: LOOP
set @ids := @ids + 1;
if @ids > new.idLast then
set done := TRUE;
end if;
IF done THEN
LEAVE ins_loop;
END IF;
insert into B values (@ids); # B has only one column 'id' in this example
END LOOP;
结束$对于您试图实现的目标,仍然像谋杀之谜一样不清楚。首先,让我更正解释,如果不存在I amusig,则查找表B中是否有值为NUM的记录。其次,也许可以开始向我解释为什么我不能在触发器中使用?如何在触发器中执行循环(在MySQL中)以进一步澄清我的问题:在表a中插入了一条字段Num=10的记录。在表B中,最高键为6。我想在表B中插入4条记录,其中key=7,key=8,key=9,key=10