1.What

    触发器是MySQL响应DELETE,INSERT,UPDATE语句前后而自动执行的一条MySQL语句

2.Why(使用情形)

    增加一个订单对应库存-1

    删除一行在后台存档中保存一个副本

    增加用户信息电话号码,身份证号时检查信息的正确性

3.How

    触发器需要的信息: 那张表的什么改动之后/之前应该做什么操作

  •  唯一的触发器名                名称
  •  触发器关联的表                地点
  •  关联表出发什么动作执行   事件
  •  关联表触发动作的时间       时间

    注意:触发器,存储过程,游标都相对于sql是DDL.创建使用CREATE

    语句:

创建      

  CREATE TRIGGER 触发器名 触发时间 触发事件 ON 关联的表

        FOR EACH ROW触发后要执行的语句

            2)每个表每个事件只支持一个触发器,每张表只支持6个触发器(增删改之前之后)

            3)单一触发器不能与多个事件绑定 eg:增删触发的语句相同仍然不能一起定义只能分别定义两条

删除


DROP trigger 触发器名

使用

  • INSERT触发器

         1).在INSERT事件触发的代码中可引用一个名为NEW的变量访问新插入的一行(NEW.name类似对象访问属性)

         2).BEFORE INSERT中通过NEW获取的值可以被更新 ,允许更改即将被插入的值

        eg:

mysql 创建触发器 权限 mysql创建触发器例子_MySQL基础知识补漏

BEFORE  --->数据验证和净化-->保证插入/更改的值确实是需要的数据

  •  DELETE触发器

            1)DELETE触发器代码内可以引用一个名为OLD代表进行删除操作的这一行代码

            2)删除操作要做备份数据时必须BEFORE DELETE,如果AFTER删除了不能备份

mysql 创建触发器 权限 mysql创建触发器例子_触发器_02

如果触发器触发的语句不止一条可使用BEGIN END包围

  •   UPDATE触发器

            

              2)OLD为只读的,BEFORE UPDATE 中NEW可被更新

mysql 创建触发器 权限 mysql创建触发器例子_MySQL基础知识补漏_03

 

4.另

 与其他DBMS相比,MySQL 5中支持的触发器相当初级。未来的MySQL版本中有一些改进和增强触发器支持的计划。

 创建触发器可能需要特殊的安全访问权限,但是,触发器的执行是自动的。如果INSERT、UPDATE或DELETE语句能够执行,则相关的触发器也能执行。

 应该用触发器来保证数据的一致性(大小写、格式等)。在触发器中执行这种类型的处理的优点是它总是进行这种处理,而且是透明地进行,与客户机应用无关。

 触发器的一种非常有意义的使用是创建审计跟踪。使用触发器,把更改(如果需要,甚至还有之前和之后的状态)记录到另一个表非常容易。

 遗憾的是,MySQL触发器中不支持CALL语句。这表示不能从触发器内调用存储过程。所需的存储过程代码需要复制到触发器内