代码执行结构有三种:顺序结构、分支结构、循环结构;其中顺序结构太过简单,这里不做介绍,主要介绍分支和循环结构。
1、if分支
分支结构: 事先准备多个代码块,按照条件选择性执行某段代码,其中各个条件之间用and
或or
连接。而非&&
和||
。
if分支的基本语法:
附:在mysql中,只有if分支
if 条件判断 then
执行体;
else
执行体;
end if;
if 条件判断 then
执行体;
elseif 条件判断 then
执行体;
else
执行体;
end if;
实例: 触发器结合if分支,判断商品库存是否足够,不够不能生成订单,如果足够,生成订单
//创建生成器
delimiter $$
create trigger after_my_order after insert on my_order for each row
begin
//判断商品库存是否足够
//获取当前库存,只能用以下方式,@inv不能前移,因为需要使用它而不是显示它
select inv from my_goods where id = new.g_id into @inv;
if @inv<new.g_number then //表名库存剩余量小于要获取的量
//触发器没有提供一个能够阻止事件发生的能力(所以需要暴力报错)
insert into xxx values(xxx);
end if;
end
$$
delimiter ;
这样,在再次插入数据时,如果商品不够用,则会直接报错。
2、while循环
循环结构: 某段代码在指定条件执行重复执行
基本语法:
循环名字 while 条件判断 do
执行体;
变更循环条件;
end while;
循环控制: 在循环内部进行循环判断和控制
leave和iterate关键字: mysql中没有对应continues和break,但是有替代品iterate(迭代),类似continue,即后面的代码不执行,循环重新来过;而leave则类似与break,直接跳出整个循环。
关键字leave和iterate使用方法: leave 循环名字;
和iterate 循环名字;
此时的基本语法如下:
//语法一:
循环名字 while 条件 do
循环体
循环控制
iterate 循环名字;
end while;
//语法二:
循环名字 while 条件 do
循环体
循环控制
leave 循环名字;
end while;