zoukankan      html  css  js  c++  java
  • 《mysql必知必会》读书笔记触发器及管理事务处理

    触发器

      触发器是MySQL响应DELETE,INSERT,UPDATE而自动执行的一条MySQL语句,其他语句不支持触发器。

      创建触发器时,需要4个条件;
        唯一的触发器名
        触发器关联的表
        触发器应该响应的活动
        触发器何时执行

      MySQL中触发器名在每个表中必须唯一,但是在同一个数据库中的两个表可具有相同名字的触发器。这个条件在其他的DBMS中是不允许的,所以为了统一,最好在同一个数据库中,触发器名设置成唯一的。

    创建触发器

    CREATE TRIGGER newproduct AFTER INSERT ON products
    FOR EACH ROW SELECT 'Product added';
    
    CREATE TRIGGER--创建一个叫newproduct的新触发器
    AFTER INSERT--此触发器将在INSERT语句成功后执行
    FOR EACH ROW--代码对每个插入行执行

      注意:

        只有表才可以支持触发器,视图、临时表都不支持
        每个表最多支持6个触发器。单一的触发器不能与多个事件或多个表关联。
        如果BEFORE触发器失败,MySQL将不执行请求操作。
        如果BEFORE触发器或语句本身失败,MySQL将不执行AFTER触发器

    删除触发器

    DROP TRIGGER newproduct;


      触发器不能修改或者覆盖,如要修改必须先删除,再创建。

    使用触发器

      INSERT触发器
        可以引用一个叫NEW的虚拟表,来访问插入的行
      DELETE触发器
        引用一个叫OLD的虚拟表,来访问被删除的行
      UPDATE触发器
        书中缺页未介绍

    管理事务处理

      MySQL中有好几种引擎,但是不是每种引擎都支持事务处理
      常用的引擎中InnoDB支持事务,MyISAM不支持事务
      几个名词:
        事务transaction
        回退rollback
        提交commit
        保留点savepoint

    控制事务管理

    ROLLBACK
    
    SELECT * FROM ordertotals;
    START TRANSACTION;
    DELETE FROM ordertotals;
    SELECT * FROM ordertotals;
    ROLLBACK;
    SELECT * FROM ordertotals;

      注意:事务用来管理INSERT、UPDATE和DELETE。不能回退CREATE或者DROP操作

    COMMIT
    
    START TANSACTION;
    DELETE FROM orderitems WHERE order_num = 20010;
    DELETE FROM order WHERE order_num = 20010;
    COMMIT;

      保留点

    -- 创建保留点
    SAVEPOINT delete1;
    -- 回滚到保留点
    ROLLBACK TO delete1;

      保留点再执行ROLLBACK或COMMIT后自动释放,mysql 5之后可以用RELEASE SAVEPOINT 明确释放保留点

      更改默认的提交行为

    SET autocommit=0

      注意:autocommit标志是针对每个连接,而不是服务器;

  • 相关阅读:
    [BZOJ]1042 硬币购物(HAOI2008)
    [Codeforces]605E Intergalaxy Trips
    [Codeforces]860E Arkady and a Nobody-men
    [Codeforces]856E Satellites
    [Codeforces]849E Goodbye Souvenir
    [Codeforces]852I Dating
    [BZOJ]1095 Hide捉迷藏(ZJOI2007)
    洛谷3275 & BZOJ2330:[SCOI2011]糖果——题解
    洛谷5960:【模板】差分约束算法——题解
    The Preliminary Contest for ICPC Asia Nanjing 2019/2019南京网络赛——题解
  • 原文地址:https://www.cnblogs.com/wulaa/p/7768116.html
Copyright © 2011-2022 走看看