• MySQL——事务(说明及其细节)


    1.事务理解

    1. 事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。如:转账就要用事务来处理,用以保证数据的一致性。
    2. 事务和锁 :
      当执行事务操作时(dml语句),mysql会在表上加锁,防止其它用户改表的数据.这对用户来讲是非常重要的

    mysql 数据库控制台事务的几个重要操作(基本操作)

    1. start transaction – 开始一个事务
    2. savepoint 保存点名-- 设置保存点
    3. rollback to 保存点名–回退事务
    4. rollback --回退全部事务
    5. commit – 提交事务,所有的操作生效,不能回退

    细节

    1. 没有设置保存点
    2. 多个保存点
    3. 存储引擎
    4. 开始事务方式

    1.回退事务

    在介绍回退事务前,先介绍一下保存点(savepoint).保存点是事务中的点.用于取消部分事务,当结束事务时(commit),会自动的删除该事务所定义的所有保存点.当执行回退事务时,通过指定保存点可以回退到指定的点

    2.提交事务

    使用commit语句可以提交事务.当执行了commit语句子后,会确认事务的变化、结束事务、删除保存点、释放锁,数据生效。当使用commit语句结束事务子后,其它会话将可以查看到事务变化后的新数据[所有数据就正式生效.]

    -- 事务的一个重要的概念和具体操作
    -- 演示
    -- 1. 创建一张测试表
    CREATE TABLE t27
    	( id INT,
    	  `name` VARCHAR(32));
    -- 2. 开始事务
    START TRANSACTION 
    -- 3. 设置保存点
    SAVEPOINT a
    -- 执行dml 操作
    INSERT INTO t27 VALUES(100, 'tom');
    SELECT * FROM t27;
    
    SAVEPOINT b
    -- 执行dml操作
    INSERT INTO t27 VALUES(200, 'jack');
    
    -- 回退到 b
    ROLLBACK TO b
    -- 继续回退 a
    ROLLBACK TO a
    -- 如果这样, 表示直接回退到事务开始的状态.
    ROLLBACK 
    COMMIT
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    1.事务细节

    1. 如果不开始事务,默认情况下,dml操作是自动提交的,不能回滚
    2. 如果开始一个事务,你没有创建保存点.你可以执行 rollback,默认就是回退到 你事务开始的状态.
    3. 你也可以在这个事务中(还没有提交时),创建多个保存点.比如:savepoint aaa; 执行 dml, savepoint bbb;
    4. 你可以在事务没有提交前,选择回退到哪个保存点.
    5. mysql的事务机制需要innodb的存储引擎还可以使用,myisam不好使.
    6. 开始一个事务 start transaction, set autocommit=off;
    -- 讨论 事务细节
    -- 1. 如果不开始事务,默认情况下,dml操作是自动提交的,不能回滚
    INSERT INTO t27 VALUES(300, 'milan'); -- 自动提交 commit
    
    SELECT * FROM t27
    
    -- 2. 如果开始一个事务,你没有创建保存点. 你可以执行 rollback,
    -- 默认就是回退到你事务开始的状态
    START TRANSACTION 
    INSERT INTO t27 VALUES(400, 'king');
    INSERT INTO t27 VALUES(500, 'scott');
    ROLLBACK -- 表示直接回退到事务开始的的状态
    COMMIT;
    
    -- 3. 你也可以在这个事务中(还没有提交时), 创建多个保存点.比如: savepoint 	aaa;    
    -- 执行 dml , savepoint  bbb
    
    -- 4. 你可以在事务没有提交前,选择回退到哪个保存点
    -- 5. InnoDB 存储引擎支持事务 , MyISAM 不支持
    -- 6. 开始一个事务 start  transaction,    set autocommit=off;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    互换性与技术测量试题及答案(4套)
    kafka微服务学习
    c++多线程
    C++(17):折叠表达式
    03 光栅图形学算法-- 裁剪算法
    海南聚广众达电子商务咨询有限公司引领行业变革
    华为云计算之物理节点CNA安装教程
    2022年Redis最新面试题第2篇 - Redis数据结构
    eclipse中使用Maven
    服务器崩溃前的数据拯救实践
  • 原文地址:https://blog.csdn.net/qq_59708493/article/details/126548358