MySQL中触发器

一、触发器的概念

       触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端保数据的完整性。

       触发器是一种特殊类型的存储过程,不由用户直接调用,创建触发器时会对其进行定义,以便在特定表或列做特定类型的数据修改时执行。

       触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。

二、触发器的作用

      1》触发器可通过数据库中的相关表实现级联更改,通过级联引用完整性约束可以更有效地执行这些更改。

       2》触发器可以强制比用CHECK约束定义的约束更为复杂的约束,与CHECK约束不同,触发器可以引用其它表中的列。例如:触发器可以使用另一个表中的SELECT比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。

      3》触发器还可以强制执行业务规则

      4》触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。

三、触发器弊端

      1》过多的触发器使得数据逻辑变得复杂

      2》数据操作比较隐含,不易进行调整修改

      3》触发器的功能逐渐在代码逻辑或事务中代替实现

四、触发器语法

        DELIMITER $$

       CREATE TRIGGER  trigger_name     BEFORE | AFTER        [ INSERT | UPDATE | DELETE ]  ON  table_name     FOR   EACH ROW   sql_statement

         $$

         DELIMITER;

         before :先完成触发,再进行增删改,触发的语句先于监视的增删改

         after:先完成数据的增删改,在进行触发,触发的 语句后于监视的增删改

五、NEW 与 OLD详解

       MySQL中定义了NEW 和OLD,用来表示触发器的所在表中,触发了触发器的那一行数据,来引用触发器中发生变化的记录内容:具体地:

       1》在INSERT型触发器中,NEW用来表示将要(BEFORE)或已经(AFTER)插入的新数据

       2》在UPDATE型触发器中,OLD用来表示将要或已经被修改的原数据,NEW用来表示将要或已经修改为的新数据;

       3》在DELETE型触发器中,OLD用来表示将要或已经被删除的原数据。

       使用方法:

                     NEW.列名

       OLD是只读的,而NEW则可以在触发器中使用SET赋值,这样不会再次触发触发器,造成循环调用。

五、查看触发器

       SHOW  TRIGGERS;

六、删除触发器

       DROP TRIGGER  trigger_name;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值