Welcome to Doris′s Blog

MySQL触发器学习总结

1.What
    触发器是MySQL响应DELETE,INSERT,UPDATE语句前后而自动执行的一条MySQL语句
2.Why(使用情形)
    增加一个订单对应库存-1
    删除一行在后台存档中保存一个副本
    增加用户信息电话号码,身份证号时检查信息的正确性
3.How
    触发器需要的信息: 那张表的什么改动之后/之前应该做什么操作
  •  唯一的触发器名                名称
  •  触发器关联的表                地点
  •  关联表出发什么动作执行   事件
  •  关联表触发动作的时间       时间
    注意:触发器,存储过程,游标都相对于sql是DDL.创建使用CREATE
    语句:
创建      
  CREATE TRIGGER 触发器名 触发时间 触发事件 ON 关联的表
        FOR EACH ROW触发后要执行的语句
    注意: 1)触发器仅支持表,不支持视图 
            2)每个表每个事件只支持一个触发器,每张表只支持6个触发器(增删改之前之后)
            3)单一触发器不能与多个事件绑定 eg:增删触发的语句相同仍然不能一起定义只能分别定义两条
删除
   
DROP trigger 触发器名
使用
  • INSERT触发器
         1).在INSERT事件触发的代码中可引用一个名为NEW的变量访问新插入的一行(NEW.name类似对象访问属性)
         2).BEFORE INSERT中通过NEW获取的值可以被更新 ,允许更改即将被插入的值
        eg:
            
BEFORE  --->数据验证和净化-->保证插入/更改的值确实是需要的数据
  •  DELETE触发器
            1)DELETE触发器代码内可以引用一个名为OLD代表进行删除操作的这一行代码
            2)删除操作要做备份数据时必须BEFORE DELETE,如果AFTER删除了不能备份
如果触发器触发的语句不止一条可使用BEGIN END包围
  •   UPDATE触发器
             1)UPDATE触发器代码中可引用一个OLD旧值,一个NEW新值
              2)OLD为只读的,BEFORE UPDATE 中NEW可被更新
 
4.另
 与其他DBMS相比,MySQL 5中支持的触发器相当初级。未来的MySQL版本中有一些改进和增强触发器支持的计划。
 创建触发器可能需要特殊的安全访问权限,但是,触发器的执行是自动的。如果INSERT、UPDATE或DELETE语句能够执行,则相关的触发器也能执行。
 应该用触发器来保证数据的一致性(大小写、格式等)。在触发器中执行这种类型的处理的优点是它总是进行这种处理,而且是透明地进行,与客户机应用无关。
 触发器的一种非常有意义的使用是创建审计跟踪。使用触发器,把更改(如果需要,甚至还有之前和之后的状态)记录到另一个表非常容易。
 遗憾的是,MySQL触发器中不支持CALL语句。这表示不能从触发器内调用存储过程。所需的存储过程代码需要复制到触发器内

posted on 2019-12-21 16:56  Doris董  阅读(382)  评论(0编辑  收藏  举报

导航