【MySQL进阶之路 | 高级篇】显式事务和隐式事务

ops/2024/10/18 21:23:09/

使用事务有两种方式:显式事务和隐式事务。

1. 显式事务

步骤1:

START TRANSACTION或者BEGIN,作用是显式开启一个事务。

START TRANSACTION语句相较于BEGIN特别之处在于,后面能跟几个修饰符。比如:

  • READ ONLY:标识当前事务是一个只读事务,也就是属于该事务的数据库操作只能读取数据,而不能修改数据。注意:只读事务中只是不允许修改那些其他事务也能访问到的表中的数据,对于临时表来说,由于它们只能在当前会话可见,所以只读事务其实也是可以对临时表做DML操作的。
  • READ WRITE(默认情况)标识当前事务是一个读写事务,也就是属于该事务的数据库操可以写入数据,也可以读取数据。
  • with consistent snapshot:启动一致性读。

read only和read write是用来设置所谓的事务访问模式的,就是以只读还是读写的方式来访问数据库的数据,一个事务的访问模式不能同时设置为只读和读写。所以不能把read only和read write放在START TRANSACTION后。

步骤2:

一系列事务中的操作(主要是DML,不含DDL)

步骤3:

提交事务或中止事务(回滚事务)。

提交事务:COMMIT;

回滚事务,撤销正在进行的所有没提交的修改:ROLLBACK;

回滚到保存点:rollback to savepoint;

在事务中创建保存点,方便以后对保存点进行回滚。一个事务可以存在多个保存点:savepoint 保存点名称;

删除某个保存点:release savepoint 保存点名称;

2. 隐式事务

MySQL中有个系统变量autocommit.默认开启(autocommit=on),DML操作是个独立的事务,自动提交。

可以关闭自动提交。

  • set autocommit=false
  • 在autocommit=true前提下,使用START TRANSACTION开启事务,那么DML操作不会自动提交数据。

3. 隐式提交数据情况

  • DDL操作。数据库对象,指的就是数据库,表,视图,存储过程等结构。当我们使用CREATE,ALTER,DROP等语句去修改数据库对象时,就会隐式的提交前边语句所属于的事务。
  • 隐式使用或修改MySQL数据库中的表。当我们使用ALTER USER,CREATE USER,DROP USER,RENAME USER,REVOKE,SET PASSWORD等语句时会隐式的提交前边的语句所属于的事务。
  • 事务控制或关于锁定的语句:当我们在一个事务还没提交或者回滚时就又使用START TRANSACTION或者BEGIN语句开启了另一个事务时,会隐式提交上一个事务。当前的autocommit系统变量的值为OFF,手动调为ON时,也会隐式的提交。

http://www.ppmy.cn/ops/86689.html

相关文章

Vue项目中优化性能的方法

在Vue项目中,优化性能是一个持续的过程,涉及到多个方面。以下是一些常见的优化策略: 组件拆分: 将大型组件拆分为更小、更可管理的子组件。使用v-if和v-else来条件渲染组件,避免渲染不必要的组件。 使用v-show和v-if&…

2023河南萌新联赛第(二)场 南阳理工学院

A. 国际旅行Ⅰ 题目&#xff1a; 思路&#xff1a; 因为题意上每个国家可以相互到达&#xff0c;所以只需要排序&#xff0c;输出第k小的值就可以了。 AC代码&#xff1a; #include<bits/stdc.h> #define int long long #define IOS ios::sync_with_stdio(0);cin.tie…

springBoot 3.X整合camunda

camunDa camunDa 是2013年从Activiti5 中分离出来的一个新的工作流引擎。Camunda 官方提供了 Camunda Platform、Camunda Modeler&#xff0c;其中 Camunda Platform 以 Camunda engine 为基础为用户提供可视化界面&#xff0c;Camunda Modeler 是流程文件建模平台&#xff0c…

STM32智能家居控制系统教程

目录 引言环境准备智能家居控制系统基础代码实现&#xff1a;实现智能家居控制系统 4.1 数据采集模块 4.2 数据处理与分析模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;家居监测与优化问题解决方案与优化收尾与总结 1. 引言 智能家居控制系统通…

牛客刷题篇

1. 计算体重指数 00&#xff1a;00&#xff1a;00⸺00 &#xff1a;10&#xff1a;34题号&#xff1a;&#xff08;⽆&#xff09; 链接&#xff1a; https://www.nowcoder.com/que stionTerminal/422f6341cf1b4212a7f8c703df111389 #include <iostream> using namesp…

前端路由快速上手-React-Router

1. 前端路由简介 前端路由是一种在单页面应用&#xff08;SPA&#xff09;中实现页面跳转的技术&#xff0c;它允许我们通过改变URL地址而无需重新加载页面来显示不同的内容。在前端路由中&#xff0c;每个路径&#xff08;path&#xff09;都对应一个组件&#xff08;compone…

Redis数据结构—跳跃表 skiplist

跳跃表&#xff08;skiplist&#xff09;是一种有序数据结构&#xff0c;它通过在每个节点中维护多个指针&#xff0c;从而实现快速的插入、删除和查找操作。跳跃表在Redis中被广泛用于实现有序集合&#xff08;sorted set&#xff09;和有序集合键&#xff08;sorted set key&…

【linux】Shell脚本三剑客之awk命令的详细用法攻略

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…