MySQL入门很简单-触发器

1、触发器是由事件来触发某个操作,这些事件包括insert语句、update语句和delete语句。当数据库系统执行这些事件时,会激活触发器执行相应操作。MySQL从5.0.2开始支持触发器。使用触发器可以保证某些操作之间的一致性。

2、创建一个执行语句的触发器
     create trigger 触发器名 before|after 触发事件  on 表名 for each row 执行语句;
          before和after参数指定触发器执行的时间;
          触发事件包括insert、update和delete;
          for each row表示任何一条记录上的操作满足触发条件都会触发触发器;
          执行语句指触发器被触发后执行的程序
     create trigger dept_trig1 before insert on department for each row insert into trigger_time values(now());

3、创建多个执行语句的触发器
     create trigger 触发器名 before|after 触发事件  on 表名 for each row begin 执行语句列表 end;
     一般情况下,MySQL默认以';'结束执行语句。在创建触发器过程中需要用到该符号。在执行语句列表也用';'分隔执行语句,因此可以用delimiter语句。
     delimiter &&
        create trigger dept_trig2 after delete
            on department for each row
            begin
                insert into trigger_time values('21:01:01');
                insert into trigger_time values('22:01:01');
            end
            &&
    delimiter;
     MySQL中,一个表在相同触发时间的相同触发事件只能创建一个触发器。如触发事件insert,触发时间为after的触发器只有一个。

4、查看触发器
     指查看数据库中已存在的触发器的定义、状态和语法等信息。查看方法包括show triggers语句和查询information_schema数据库下的triggers表等。
     show triggers \G   //查看所有的触发器,不适合触发器很多的情况
     select * from information_schema.triggers;
     select * from information_schema.triggers where trigger_name='触发器名';
     
5、MySQL中,触发器执行的顺序是before触发器、表操作(insert、update和delete)和after触发器
     create trigger before_insert before insert on department for each row insert into trigger_test values(null, "before_insert");
     create trigger after_insert before insert on department for each row insert into trigger_test values(null, "after_insert");
     激活触发器时,对触发器的执行语句存在一些限制。如,触发器中不能包含start transaction、commit或rollback等关键词也不能包含call语句。
     在触发器执行过程中,任何步骤出错都会阻止程序向下执行,对于普通表来说,已经更新过的记录不能回滚,更新后的数据将继续保留在表中。

6、删除触发器
     drop trigger 触发器名。
     触发器名参数如果指指定名称会在当前数据库下查找该触发器,如果找到就删除。如果指定数据库,数据库系统会到指定的数据库下去查找触发器。
     如果不再需要某触发器,一定要将该触发器删除。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值