• tcl之事务


    专栏目录请点击

    存储引擎

    • 查看mysql支持的存储引擎,输入show engines
    SHOW ENGINES;
    
    • 1

    在这里插入图片描述
    我们会发现支持的只有InnoDB

    • 查看使用的存储引擎:show variables like '%storage_engine%';

    事务

    简介

    一条或多条sql语句组成一个执行单位,一组sql语句要么都执行,要么都不执行

    特点

    1. 原子性 (Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败
    2. 一致性 (Consistency):保证数据的状态操作前和操作后保持一致
    3. 隔离性 (Isolation):多个事务同时操作相同数据库的同一个数据时,一个事务的执行不受另外一个事务的干扰
    4. 持久性 (Durability):当事务提交或回滚后,数据库会持久化的保存数据

    分类

    隐式事务

    • 没有明显的开启和结束事务的标志,本身就是事务自动提交insertupdatedelete语句本身就是一个事务

    显式事务

    • 具有明显的开启和结束事务的标志

    使用步骤

    1. 取消自动提交事务:set autocommit=0; (默认开启事务)
    2. 开启事务:start transaction; (可以省略)
      1. 写事务中的sql语句 (selectinsertupdatedelete)
      2. 设置回滚点:savepoint 回滚点名(自定义);
    3. 提交或回滚事务
      1. 提交- commit;
      2. 回滚- rollback;
      3. 回滚到指定的地方:rollback to 回滚点名;

    例子

    回滚

    1. 查看当前mysql是否自动提交
    SHOW VARIABLES LIKE 'autocommit';
    
    • 1

    在这里插入图片描述
    2. 写事务

    # 1. 开启事务
    SET autocommit = 0;
    START TRANSACTION;
    
    # 2. 编写事务的sql语句
    INSERT INTO `student` ( `name`, `age`,`sex` )
    VALUES ( "玉皇大帝", 3000,"male" );
    
    INSERT INTO `student` ( `name`, `age`,`sex` )
    VALUES ( "王母娘娘", 2500,"female" );
    
    # 现在我们执行一下上面的sql,我们会发现表格中的数据并没有改变,现在我们执行一下commit,就会发现数据写入到了磁盘
    COMMIT;
    # 回滚需要rollback
    # rollback;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    回滚点

    • 想要是用回滚点,我们需要使用关键字SAVEPOINT
    # 1. 开启事务
    SET autocommit = 0;
    START TRANSACTION;
    
    # 2. 编写事务的sql语句
    INSERT INTO `student` ( `name`, `age`,`sex` )
    VALUES ( "玉皇大帝", 3000,"male" );
    
    # 设置保存点
    SAVEPOINT a;
    
    INSERT INTO `student` ( `name`, `age`,`sex` )
    VALUES ( "王母娘娘", 2500,"female" );
    
    # 回滚到保存点
    ROLLBACK TO a;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    什么是未来数据中心?
    遥感影像智能处理比赛收集
    【网络】网络基础知识详解
    Win32简单图形界面程序逆向
    使用Spring Boot和JPA创建GraphQL API
    Linux gcc和make学习
    快速入门Flask微服务架构
    基于FPGA的数字时钟系统设计
    Python高级进阶(2)----Python装饰器的艺术
    详解欧拉计划第581题:光滑三角形数
  • 原文地址:https://blog.csdn.net/youhebuke225/article/details/126848406