用MySQL写个触发器

触发器的定义:进行数据库应用软件的开发时,我们有时会碰到表中的某些数据改变,希望同时引起其他相关数据改变的需求,利用触发器就能满足这样的需求。它能在表中的某些特定数据变化时,自动完成某些查询。运用触发器不仅可以简化程序,而且可以增加程序的灵活性。

触发器是一类特殊的事务:可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete)

创建触发器的语法

create trigger 触发器名称
after/before (触发时间,是在监视事件做了之前,还是在监视事件做了以后)
insert/update/delete(监视事件)
on 表名(监视地址)
for each row (是语句级触发器,还是行级触发器)
begin 
    sql1;   (内部语句为前面设定触发事件之后,所做的语句操作)
    ...
    sqlN;
end

清楚触发器的四个关键点

监视谁(哪张表):order
监视动作(事件):insert
触发时间:after
触发事件:update

简单的触发器例子

delimiter $   //作用是设置结束标志
create trigger t1 
after
insert 
on order(表)
/**   在oracle触发器中,触发器分语句级触发器,和行级触发器
每一行受影响,触发器都执行,叫做行级触发器
在oracle中for each row 如果不写,无论Update语句一次影响了多少行,都只执行1次  **/
for each row   
begin
declare rnum int;  //定义一个变量
select xx into rnum from goods where gid = new.gid;  //查询到的数据,放到定义的变量中
if new.much > num then
    set  ...= xxx;
end if;
update goods set num = num -new.much where gid = new.gid; 
//new表示获取操作之后表的行,同理old代表获取操作之前表的行
end$

两个补充的命令:

查看trigger:  show trigger

删除tirgger:  drop trigger

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T_Tzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值