如何在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的记录,但我不知道如何插入所有其他记录。我发现我的问题主要是由于处理全局变量的语法,而不是在触发器内创建集合。

我是MySQL新手。 我想创建一个触发器,在将一条记录插入
表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