触发器

A、什么是触发器

  概念:触发器是一种特殊类型的存储过程,在满足条件定义条件操作时触发,并自动执行触发器中预先设定好的定义的语句集合

  简述:触发器是特殊的存储过程;满足条件就触发(自动执行)预先编译的sql集合

B、好处

  1、安全姓:可以基于数据库的值使用户具有操作数据库的某种权利

  2、审计:可以跟踪用户对数据库的操作

  3、实现复杂的数据完整 性规划

  4、提供了运行计划任务的另一种方法

C、触发器的基本语法

  1、创建语法

    a、关键字:trigger

    b、语法 ( #:注释)

      create trigger 触发器名
      after|before         #触发时间
      insert|update|delete    #触发事件
      on 表名             #触发对象
      for each row          #针对表中每一条数据都会触发
      begin
          sql操作;
      end

    c、注意

      1)触发器名tr_XXX

      2)触发时机:after|before

        before 触发事件之前

        after 触发事件之后

      3)触发事件 --因为什么事触发

        insert delete update --DML操作

        DQL 数据查询语句

      4)触发对象就是表,也就以为,触发器时建立在表上的

      5)for each row 表示任何一条记录上的操作满足触发事件都会触发该触发器

  2、删除语法

    a、关键字:drop

    b、语法:drop trigger 触发器名;

  3、查看视图结构语法

    a、关键字:show create

    b、语法:show create trigger 触发器名;

D、after和before的区别

  1、after 触发事件之后

    注意:触发时:曾删改动作是否已经完成了?

      答:已经完成了增删改动作,新数据已经填入表中,如果需要操作数据,可以使用增删改完成。

  2、before 触发事件之前

    注意:

      a、before前置触发器,触发时:增删改动作是否已经完成了?

      答:没有完成。增删改动作会等待before前置触发器操作完成后,才会继续。

      b、before前置触发器会首先获取要增改的值 新数据存new,旧数据存old 等待我们去操作数据,可以使用set new.字段=XXX;来修改数据 改完之后,不需要做任何操作,增删改动作会继承。

  3、new和old的区别和用法

    a、

    

     b、old表只读的,而new表则可以在触发器中使用set赋值操作,避免重复触发器

    c、新增new,删除old,修改先old再new;新增是新数据,修改是先旧数据后新数据,删除是旧数据;新数据存new,旧数据存old

原文地址:https://www.cnblogs.com/dyxg/p/13630523.html