MySQL 的触发器
一、触发器定义
进行数据库应用软件的开发时,我们有时会碰到表中的某些数据改变,希望同时引起其他相关数据改变的需求,利用触发器就能满足这样的需求。 它能在表中的某些特定数据变化时自动完成某些查询。运用触发器不仅可以简化程序,而且还可以增加程序的灵活性。
触发器是一类特殊的事务,可以监视某种数据操作(insert/update/deleted)并触发相关操作(insert/update/deleted)。
创建触发器的 4 要素:
1、监视地点(table)
2、监视事件(insert/update/deleted)
3、触发时间(after/before)
4、触发事件(insert/update/deleted)
二、创建语法
在创建之前可以先查看一下已有哪些触发器:
show triggers
产出已有触发器
drop trigger triggerName
创建触发器的语法
create trigger 触发器名称
after/before(触发时间)
insert/update/deleted(监视事件)
on 表名(监视地址)
for each row
begin
sql1;
...
sqlN;
end
举个例子:
需求:
商品表:goods
订单表:order
当下1个订单时,对应的商品要相应的减少(买几个商品就减少几个库存)
分析:
监视谁:order
监视动作:insert
触发时间:暂选之后吧
触发事件:update
create trigger t1
after
insert
on order
for each row
begin
update goods xxxxx(update goods set num = num-2 where gid = 1)
end
三、触发器中引入行变量
insert(被监视的语句),产生的数据,能否在触发器中引用到?
create trigger t2
after
insert
on order
for each row
begin
update goods xxxxx(update goods set num=num-new.much(field) where gid = new.gid(field))
end
//new 表示对新行的引用
//old 表示对旧行的引用
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: MySQL 事务
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论