MySQL事务

事务用于保证数据的一致性,由一组相关的dml语句组成,该组的dml语句要么全部成功后提交,要么全部失败。进行一个事物操作时,也可以防止其它用户修改表的数据。

举个例子:转账这个操作需要在数据库中先给转载方扣去一定金额,再给收款方增加一定金额,这两个操作是关联的,它们必须都成功,否则转账就出现了问题。

事务的基本操作

注意:表的存储引擎为InnoDB才可以使用事务操作。

START TRANSACTION;

语法:SAVEPOINT 保存点名称

SAVEPOINT point_a;

选择回退到保存点:ROLLBACK TO 保存点
回退到事务开始转台:ROLLBACK

ROLLBACK TO pointa;

一旦提交事务后,所有的操作将生效,其它在使用数据库的人将会看到你操作后表的结果,提交后不可以进行回退。

-- 提交 --
commit

事务隔离

当存在多个连接开启事务操作数据库时,数据库系统需要设置隔离级别以保证各个连接在获取数据时的准确性.如果没有设置事务隔离,将可能引发脏读,不可重复读,幻读等问题

隔离级别 脏读 不可重复读 幻读 加锁读 读未提交(READ UNCOMMITTED) 允许 允许 允许 不加锁 读已提交(READ COMMITTED) 禁止 允许 允许 不加锁 可重复读(REPEATABLE READ) 禁止 禁止 禁止 不加锁 可串行读(SERIALIZABLE) 禁止 禁止 禁止 加锁

加锁读后,必须等待其它事务提交后才进行读取。

查看隔离级别(MySQL8.0): SELECT @@TRANSACTION_ISOLATION
查看隔离级别(MySQL5.7): SELECT @@tx_ISOLATION
设置隔离级别: SET SESSION TRANSACTION ISOLATION LEVEL 隔离级别

-- 设置读已提交
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED

说明:系统默认的隔离级别是可重复读,一般情况下不用修改隔离级别

原子性:事务是不可分割的一个单位,一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。

一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。

隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。

持久性:事务处理结束后,对数据的修改就是永久的,

Original: https://www.cnblogs.com/yjh1024/p/16541479.html
Author: Nights_Watch
Title: MySQL事务

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/621064/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Shell 中 [[]]和[]的区别

    多数情况下 []和 [[]]是可以通用的,两者的主要差异是: test或 []是符合POSIX标准的测试语句,兼容性更强,几乎可以运行在所有Shell解释器中,相比较而言 [[]]…

    数据库 2023年6月14日
    084
  • 做数据时代的加油站,ShardingSphere 为易车数据库架构演进提供新动力

    Apache ShardingSphere 前段时间应邀来到易车北京总部,PMC Chair 张亮与易车的技术同学在数据加解密、扩容、迁移、上云等话题展开了深度交流与探讨。 作为中…

    数据库 2023年6月16日
    0239
  • LeetCode 13. 罗马数字转整数

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如,罗马数字2写做II,…

    数据库 2023年6月11日
    089
  • day01-需求分析和系统设计

    对传输数据的分析: 因为在通讯的时候信息的种类和信息比较多,如果使用文本的方式来传递数据,那么服务器拿到信息的时候对其进行拆解会很麻烦。因此使用对象的方式来进行数据的传输(同时使用…

    数据库 2023年6月11日
    087
  • select,poll,epoll

    select、poll、epoll 区别总结: 底层实现 select/poll 首先把关注的Socket集合从用户态拷贝到内核态,然后由内核检测事件,遍历整个集合(由于线性结构实…

    数据库 2023年6月16日
    094
  • mysql主从

    mysql主从 mysql主从 1.主从原理 1.1 主从介绍 1.2 主从作用 1.3 主从形式 1.4 主从复制原理 2.主从复制配置 2.1 mysql安装 2.2 mysq…

    数据库 2023年5月24日
    076
  • etcd和Zookeeper孰优孰劣对比

    背景 最近在看到Pachyderm的介绍时,看到作者拿YARN和Kubernetes做类比,拿Zookeeper和etcd做对比。YARN和Kubernetes的类比还相对比较好理…

    数据库 2023年6月11日
    096
  • 台湾停电公司竟要求手写代码,网友:就无语

    背景 3月3日上午9点左右,中国台湾省突然毫无预警地大面积停电,高雄市车流量最多的街道里,至少有191处红绿灯不亮,此事严重影响了人民的生活。 不少台湾民众在推特上吐槽,乌克兰战乱…

    数据库 2023年6月9日
    094
  • MySQL 回表

    MySQL 回表 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。 一、简述 回表,顾名思义就是回到表中,也就是先通过普通索引扫描出数据所在的行,再通过行主键ID 取出索引中未包含…

    数据库 2023年5月24日
    085
  • CentOS7 安装MySQL5.7企业版(商业版)及修改my.cnf默认datadir、socket路径后无法启动的处理方法

    一、清理环境 查看是否已安装 rpm -qa |grep -i mysql rpm -qa |grep -i mariadb –(centos7默认系统自带的查看版本号…

    数据库 2023年5月24日
    0128
  • 达梦产品技术支持培训-day2-DM8常用SQL

    (本文只作为随笔或个人笔记,非官方文档,请勿作他用,谢谢) DM8数据库的SQL兼容性很高,和Oracle差距不大,以下是个人认为比较关键的部分。 1、关键动词 2、数据类型 2….

    数据库 2023年6月11日
    091
  • 浅谈一下“敏捷开发”

    为什么需要敏捷开发 在以前,软件项目的开发都是以年来计算的,这代表什么意思呢 ?需求设计了半年多,方案设计做了半年多,开发了三年多,测试了半年多,修改Bug用了半年多。总计花了很长…

    数据库 2023年6月14日
    087
  • 什么是回表,怎么解决?

    表tbl有a,b,c三个字段,其中a是主键,b上建了索引,然后编写sql语句SELECT * FROM tbl WHERE a=1这样不会产生回表,因为所有的数据在a的索引树中均能…

    数据库 2023年5月24日
    079
  • 数据库

    建库操作 #创建数据库(默认字符集编码) create database test20210420 #创建数据库的时候指定字符集编码以及字符校验规则 create database…

    数据库 2023年5月24日
    067
  • InnoDB 中不同SQL语句设置的锁

    锁定读、UPDATE 或 DELETE 通常会给在SQL语句处理过程扫描到的每个索引记录上设置记录锁。语句中是否存在排除该行的WHERE条件并不重要。InnoDB不记得确切的WHE…

    数据库 2023年5月24日
    079
  • 2022的七夕,奉上7个精美的表白代码,同时教大家快速改源码自用

    🤵‍♂️ 个人主页:奇想派👨‍💻 作者简介:奇想派,十年全栈开发经验,团队负责人。喜欢钻研技术,争取成为编程达人 🎖️!🗺️学海无涯苦作舟,🛤️编程之路无悔路!📝 如果文章对你有帮…

    数据库 2023年6月16日
    0108
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球