案例:网上购物,根据生产订单的类型,商品的库存量对应的进行增和减。此案例涉及两张表,分别为订单表和商品表,下单时,商品表库存减少;退单时,商品表库存增加。如何实现?
触发器
触发器:trigger,是指事先为某张表绑定一段代码,当表中的某些内容发生改变(增、删、改)的时候,系统会自动触发代码并执行。
触发器包含三个要素,分别为
- 事件类型:增删改,即insert、delete和update;
- 触发时间:事件类型前和后,即before和after;
- 触发对象:表中的每一条记录(行),即整张表。
每张表只能拥有一种触发时间的一种事件类型的触发器,即每张表最多可以拥有 6 种触发器。
创建触发器
1
2
3
4
5
6
7
8
9
10 1-- 创建触发器基本语法
2delimiter 自定义符号 -- 临时修改语句结束符,在后续语句中只有遇到自定义符号才会结束语句
3create trigger + 触发器名称 + 触发器时间 + 事件类型 on 表名 for each row
4begin -- 代表触发器内容开始
5-- 触发器内容主体,每行用分号结尾
6end -- 代表触发器内容结束
7自定义符号 -- 用于结束语句
8delimiter ; -- 恢复语句结束符
9
10
根据上述案例的需求,我们先来创建两张表,分别为商品表goods和订单表orders,SQL 语句如下:
1
2
3
4
5 1-- 创建商品表
2create table goods(
3 id int primary key auto_increment,
4
5