mysql触发器.docx
- 文档编号:25574481
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:11
- 大小:760.34KB
mysql触发器.docx
《mysql触发器.docx》由会员分享,可在线阅读,更多相关《mysql触发器.docx(11页珍藏版)》请在冰豆网上搜索。
mysql触发器
触发器(trigger)
作用:
可以监视增删改操作
并触发增删改操作
创建触发器
(delimiter$)
createtrigger触发器名称
after/beforeinsert/update/deleteon表名
foreachrow
begin
sql语句—一个或者多个语句,范围在insert/update/delete内;
end($)
在此需要重新设置结束符号
delimiter$
创建第一个简单触发器:
效果
g表羊自动减少3只
发现问题:
设置结尾符号语句不可带分号
否则设置不成功
解决方案
如何在触发器中引用行的值
对于insert而言,新增的行用new来表示。
行中的每一列的值,用new.列名来表示。
对于delete而言,删去的行用old来表示。
行中的每一列的值,用old.列名来表示。
对于update而言,更新前的行用old来表示。
old.列名表示更新前的引用。
更新后的行,用new.列名来表示更新后的引用。
触发器的删除
droptrigger触发器名称
触发器的显示
清空表单
truncate表名
购买下单实例
1、创建满足条件的新的触发器
2、执行insert(下第一笔订单购买4号商品,数量为2)
3、查看o订单
4、g商品表中的对应id号得商品减少
完整购买案例
1、增加一个订单,库存相应减少
2、删除一个订单,库存相应增加
3、修改下单时,商品表数量相应发生变化
触发器里after和before的区别
after是先完成数据的操作,再出发时间,不能对前面的增删改作出影响。
如果用的是before,可以对数据进行审查。
是先于触发再完成增删改,可以审查、判断、即将发生的增删改操作。
before应用
创建触发器时即可对插入数据进行影响
createtriggerbuy
beforeinsertono
foreachrow
begin
ifnew.much>5then
setnew.much=5;
endif;
updategsetnum=num-new.muchwhereid=new.gid;
end$
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mysql 触发器