Mysql分步向导失败

Mysql分步向导失败,mysql,stored-procedures,wizard,Mysql,Stored Procedures,Wizard,我正在使用mysql触发器和存储过程制作一个向导 delimiter $$ CREATE TRIGGER le_trigger AFTER INSERT ON inbox FOR EACH ROW BEGIN declare last_inserted_number VARCHAR(100) DEFAULT '0800100200'; declare last_inserted_message VARCHAR(100) DEFAULT 'Lorem Ipsum'; set last_inser

我正在使用mysql触发器和存储过程制作一个向导

delimiter $$
CREATE TRIGGER le_trigger
AFTER INSERT ON inbox
FOR EACH ROW
BEGIN
declare last_inserted_number VARCHAR(100) DEFAULT '0800100200';
declare last_inserted_message VARCHAR(100) DEFAULT 'Lorem Ipsum';

set last_inserted_number = NEW.in_number;
set last_inserted_message = NEW.in_message;

if (not exists(select id from transactions where tel = last_inserted_number)) then
    insert into transactions(message, tel)
        values(last_inserted_message, last_inserted_number);
        insert into outbox(out_message, out_number)
        values("go to step 1", last_inserted_number);
else

   if ( exists(select id from transactions where tel = last_inserted_number && step_1='')) then
    update transactions set step_1=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 2", last_inserted_number);
end if;

   if ( exists(select id from transactions where tel = last_inserted_number && step_2='')) then
    update transactions set step_2=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 3", last_inserted_number);
end if;

   if ( exists(select id from transactions where tel = last_inserted_number && step_3='')) then
    update transactions set step_3=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 4", last_inserted_number);
end if;

   if ( exists(select id from transactions where tel = last_inserted_number && step_4='')) then
    update transactions set step_4=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 5", last_inserted_number);
end if;

   if ( exists(select id from transactions where tel = last_inserted_number && step_5='')) then
    update transactions set step_5=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 6", last_inserted_number);
end if;

   if ( exists(select id from transactions where tel = last_inserted_number && step_6='')) then
    update transactions set step_6=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 7", last_inserted_number);
end if;

   if ( exists(select id from transactions where tel = last_inserted_number && step_7='')) then
    update transactions set step_7=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 8", last_inserted_number);
end if;

   if ( exists(select id from transactions where tel = last_inserted_number && step_8='')) then
    update transactions set step_8=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 9", last_inserted_number);
end if;

   if ( exists(select id from transactions where tel = last_inserted_number && step_9='')) then
    update transactions set step_9=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("success.you have completed the form", last_inserted_number);
end if;

end if;

END$$
delimiter ;
但问题是所有的ifs都是同时执行的,没有实现类似向导的行为。计划是监视表收件箱并在插入触发器后获取邮件和发件人号码。如果是这样,是否可以退出循环

else

   if ( exists(select id from transactions where tel = last_inserted_number && step_1='')) then
    update transactions set step_1=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 2", last_inserted_number);
end if;
exit..here

... more step_* code....

并在收件箱中插入另一条后继续?

不要将代码作为单独的语句编写。使用
elseif
(您可以阅读文档):


我不是100%确定这是你想要的逻辑。如果没有,它应该指导你做什么。

你的答案就是我想要的。我在另一个heidisql查询选项卡上写
elseif
elseif
。谢谢。
if (not exists(select id from transactions where tel = last_inserted_number)) then
    insert into transactions(message, tel)
        values(last_inserted_message, last_inserted_number);
        insert into outbox(out_message, out_number)
        values("go to step 1", last_inserted_number);
elseif ( exists(select id from transactions where tel = last_inserted_number && step_1='')) then
    update transactions set step_1=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 2", last_inserted_number);
elseif ( exists(select id from transactions where tel = last_inserted_number && step_2='')) then
    update transactions set step_2=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 3", last_inserted_number);
elseif ( exists(select id from transactions where tel = last_inserted_number && step_3='')) then
    update transactions set step_3=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 4", last_inserted_number);
elseif ( exists(select id from transactions where tel = last_inserted_number && step_4='')) then
    update transactions set step_4=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 5", last_inserted_number);
elseif ( exists(select id from transactions where tel = last_inserted_number && step_5='')) then
    update transactions set step_5=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 6", last_inserted_number);
elseif ( exists(select id from transactions where tel = last_inserted_number && step_6='')) then
    update transactions set step_6=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 7", last_inserted_number);
elseif ( exists(select id from transactions where tel = last_inserted_number && step_7='')) then
    update transactions set step_7=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 8", last_inserted_number);
elseif ( exists(select id from transactions where tel = last_inserted_number && step_8='')) then
    update transactions set step_8=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("go to step 9", last_inserted_number);
elseif ( exists(select id from transactions where tel = last_inserted_number && step_9='')) then
    update transactions set step_9=last_inserted_message where 
     tel=last_inserted_number;
       insert into outbox(out_message, out_number)
        values("success.you have completed the form", last_inserted_number);
end if;