MySQL触发器的基本使用

1、触发器是什么?

      触发器是与表有关的数据库对象,满足定义的条件时触发,并执行触发器中定义的语句。并且只对永久表创建,不能对临时表。

2、触发器的作用是什么?

     协助应用在数据库端保持数据的完整性。

3、触发器的基本使用方法

       以表emp,dept为例来解释。

      create table emp(id int auto_increment, ename varchar(20), sal decimal(10,2), deptno int);

      create table dept(id int auto_increment, deptno int, deptname varchar(20));

      目前仅创建了两个空表。下面开始讲解触发器的基本使用方法。

      a)创建触发器

      将结束符从分号变为双斜杠。

      delimiter //            

      create trigger ins_emp after insert on emp for each row begin

      insert into dept values (id, deptno, deptname) values (new.id,new.deptno, new.deptname);

      end;

      //

      delimiter ;

     解释:创建一个名称为 ins_emp的触发器在约束后触发,触发事件为emp表的insert事件,在emp表进行insert操作时触发表dept也执行insert操作,将插入表emp的deptno, ename值插入到dept对应的deptno , deptname字段中。

     create trigger ins_emp(触发器名称) after(约束后触发,还可以是约束前触发 before) insert (触发事件,还可以是update、delete)on emp(表名) for each row

      begin

      insert into dept values (deptno, deptname) values (new.deptno, new.ename);(具体的触发操作)

      end;

     验证触发器:emp表中的ename,deptno数据同时查无到了dept表中的deptname,deptno中。

     对表emp创建了触发器ins_emp后,不能再对emp表创建触发器。同一个表相同触发事件的相同触发事件,只能定义一个触发器。

     触发器触发顺序:

           在对表创建触发器,但是触发事件insert、update不同,触发约束before、after也不同的情况下的操作顺序。

            1)有重复记录,即要进行update又要进行insert操作,触发顺序为:

                         before insert、 before update、 after update。

             2)无重复记录,就是简单执行insert操作,触发顺序为:

                        before insert、 after insert。

     b) 删除触发器

         drop trigger 触发器名称;

     c) 查看触发器

        show triggers \G

       系统表查看方法:

         desc triggers;

         select * from triggers where trigger_name="触发器名称"  \G

 

注意:

        不能在触发器中显示使用开始或者结束事务的语句,如start transaction\ commit, rollback.

        不能调用将数据返回客户端的存储程序,也不能采用call语句,但是允许存储程序通过参数将数据返回触发程序,也就是存储过程或者函数通过out、intout类型的参数将数据返回触发器,但是不能直接调用返回数据的过程。

        触发顺序是按照before操作、行操作、after操作执行,任何一部出现错误不会继续执行剩下的操作。


       

   







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值