mysql 触发器的创建、问题、解决方…

时间:2021-09-15 02:02:39

 

触发器(trigger

作用:

 

可以监视 增删改操作

并触发 增删改操作

mysql 触发器的创建、问题、解决方…


创建触发器

(delimiter$)

create  trigger 触发器名称

after/before  insert/update/delete on 表名

for each row

begin

sql 语句一个或者多个语句,范围在 insert/update/delete内;

end ($)

 

在此需要重新设置结束符号

delimiter $

mysql 触发器的创建、问题、解决方…


 

创建第一个简单触发器:

mysql 触发器的创建、问题、解决方…


效果

mysql 触发器的创建、问题、解决方…


表  羊自动减少 3只

mysql 触发器的创建、问题、解决方…


 

发现问题:

1  、字符集问题导致插入数据失败

    解决方案 修改字符集

mysql 触发器的创建、问题、解决方…


 

2 、设置结尾符号语句 不可带  分号

否则设置不成功

mysql 触发器的创建、问题、解决方…



解决方案

mysql 触发器的创建、问题、解决方…

何在触发器中引用行的值

mysql 触发器的创建、问题、解决方…

对于insert 而言,新增的行用new来表示。

行中的每一列的值,用new.列名来表示。

对于delete而言,删去的行用 old来表示。

行中的每一列的值,用old.列名来表示。


对于update而言,更新前的行用 old来表示。old.列名表示更新前的引用。

更新后的行,用new.列名来表示更新后的引用。

 

触发器的删除

droptrigger 触发器名称


触发器的显示

mysql 触发器的创建、问题、解决方…

清空表单

truncate 表名

mysql 触发器的创建、问题、解决方…

 

购买下单实例

1、创建满足条件的新的触发器

mysql 触发器的创建、问题、解决方…

2、执行insert(下第一笔订单购买 号商品,数量为2)

mysql 触发器的创建、问题、解决方…

3、查看o订单

mysql 触发器的创建、问题、解决方…

4、g商品表中的对应id号得商品减少

mysql 触发器的创建、问题、解决方…

完整购买案例

 

1、增加一个订单,库存相应减少

mysql 触发器的创建、问题、解决方…

2、删除一个订单,库存相应增加

mysql 触发器的创建、问题、解决方…

mysql 触发器的创建、问题、解决方…

3、修改下单时,商品表数量相应发生变化

mysql 触发器的创建、问题、解决方…



mysql 触发器的创建、问题、解决方…


 

触发器里after 和 before的区别

after 是先完成数据的操作,再出发时间,不能对前面的增删改作出影响。

如果用的是before,可以对数据进行审查。是先于触发再完成增删改,可以审查、判断、即将发生的增删改操作。

 

before应用

mysql 触发器的创建、问题、解决方…

创建触发器时即可对插入数据进行影响

createtrigger buy

beforeinsert on o

foreach row

begin

 ifnew.much >5 then

 setnew.much=5;

 endif;

 updateg set num = num-new.much where id = new.gid;

end$

 

mysql 触发器的创建、问题、解决方…