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

来源:互联网 发布:上班族副业知乎 编辑:程序博客网 时间:2024/05/20 15:42

 

触发器(trigger

作用:

 

可以监视 增删改操作

并触发 增删改操作

mysql <wbr>触发器的创建、问题、解决方案


创建触发器

(delimiter$)

create  trigger 触发器名称

after/before  insert/update/delete on 表名

for each row

begin

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

end ($)

 

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

delimiter $

mysql <wbr>触发器的创建、问题、解决方案


 

创建第一个简单触发器:

mysql <wbr>触发器的创建、问题、解决方案


效果

mysql <wbr>触发器的创建、问题、解决方案


表  羊自动减少 3只

mysql <wbr>触发器的创建、问题、解决方案


 

发现问题:

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

    解决方案 修改字符集

mysql <wbr>触发器的创建、问题、解决方案


 

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

否则设置不成功

mysql <wbr>触发器的创建、问题、解决方案



解决方案

mysql <wbr>触发器的创建、问题、解决方案

何在触发器中引用行的值

图片

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

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

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

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


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

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

 

触发器的删除

droptrigger 触发器名称


触发器的显示

图片

清空表单

truncate 表名

图片

 

购买下单实例

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

图片

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

mysql <wbr>触发器的创建、问题、解决方案

3、查看o订单

mysql <wbr>触发器的创建、问题、解决方案

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

mysql <wbr>触发器的创建、问题、解决方案

完整购买案例

 

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

mysql <wbr>触发器的创建、问题、解决方案

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

mysql <wbr>触发器的创建、问题、解决方案

mysql <wbr>触发器的创建、问题、解决方案

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

mysql <wbr>触发器的创建、问题、解决方案



mysql <wbr>触发器的创建、问题、解决方案


 

触发器里after 和 before的区别

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

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

 

before应用

mysql <wbr>触发器的创建、问题、解决方案

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

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 <wbr>触发器的创建、问题、解决方案





0 0