进行数据库应用软件的开发时,我们有时会碰到表中的某些数据改变,希望同时引起其他相关数据改变的需求,利用触发器就能满足这样的需求。 它能在表中的某些特定数据变化时自动完成某些查询。运用触发器不仅可以简化程序,而且还可以增加程序的灵活性。
触发器是一类特殊的事务,可以监视某种数据操作(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 表示对旧行的引用
