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)

大家都在看

  • JavaWeb核心篇(7)——VUE和Element

    VUE&Element 今日目标: 能够使用VUE中常用指令和插值表达式 能够使用VUE生命周期函数 mounted 能够进行简单的 Element 页面修改 能够完成查询…

    数据库 2023年6月14日
    0118
  • 【黄啊码】MySQL入门—3、我用select *,老板直接赶我坐火车回家去,买的还是站票

    大家好!我是黄啊码,学会了DDL语句了吗?那我们今天就来学习一下基本的查询语法,我见过很多外包机构的程序员都是万物皆可select *,然后项目跑了一段时间就基本跑不动了,问就回答…

    数据库 2023年6月16日
    082
  • Maven项目添加外来jar包

    本例: 是为了读取Excel文件并把数据录入数据库,从数据库读写数据 写入Excel文件 用到的jar包:mysql—-poi Original: https://ww…

    数据库 2023年6月9日
    097
  • 23种设计模式之观察者模式

    文章目录 概述 观察者模式的优缺点 观察者模式应用场景 观察者模式的结构和实现 * 模式结构 模式实现 总结 ; 概述 观察者模式很好理解,类似于邮件订阅和RSS订阅,当我们浏览一…

    数据库 2023年6月6日
    0132
  • MySQL45讲之更新缓存

    本文介绍 MySQL的更新缓存 Change Buffer,以及唯一索引和普通索引如何选择。 唯一索引和普通索引的选择 查询过程 在唯一索引下,查询索引树,找到第一个匹配的行并返回…

    数据库 2023年5月24日
    0121
  • IDEA 常用插件

    插件使用参考:Idea插件系列 插件名称 说明 IDE Eval Reset 破解软件 Alibaba Java Coding Guidelines 阿里巴巴开发规范 tabnin…

    数据库 2023年6月6日
    0103
  • SpringMvc(二)- 请求处理参数 和 响应数据处理

    1、请求处理参数 1.1 请求参数 @RequestParam 1.1.1 不使用 @RequestParam 注解 请求参数处理, 不使用参数注解:1.如果 请求参数名和请求处理…

    数据库 2023年6月16日
    0106
  • Decorator 装饰(结构型)

    Decorator 装饰 (结构型) 一:描述: Decorator 装饰模式是动态地给一个对象增加一些额外的功能职责特性。 来替换以前使用的继承来静态扩展对象的功能,避免子类的增…

    数据库 2023年6月11日
    0106
  • Postman调用token配置为全局变量,适用于所有接口

    操作方法 1.在Request区域→Tests区域 填写调用方法 //在Postman的Tests填写以下代码,设置Postman的环境变量token方法://断言返回200状态码…

    数据库 2023年6月14日
    0109
  • Java Script 循环,数组,对象,判断,阶乘,查找-综合运用合集

    输出100个hello world. for (var i = 1; i console.log("hello world");} 创建一个包含1~100的数组…

    数据库 2023年6月11日
    0127
  • JUC学习

    如何正确停止线程? 停止线程应该是一种通知协作的方式,比如interrupt,但是它仅仅是通知线程,线程拥有完全的自主权,根据自身业务来判断什么时候停止,因为如果选择立即停止就可能…

    数据库 2023年6月16日
    0131
  • 通过NTFS日志分析文件的时间属性是否被篡改

    前期准备 NTFS日志记录了什么东西? NTFS日志会记录NTFS文件系统中文件的创建、修改、增加数据、删除等操作执行的时间,虽说这个日志也可以被第三方程序修改,但仍然可以作为一个…

    数据库 2023年6月11日
    0118
  • Spring(四)-声明式事务

    Spring-04 声明式事务 1、事务的定义 事务就是由 一组逻辑上紧密关联的 多个工作单元(数据库操作)而合并成一个整体,这些操作 要么都执行,要么都不执行。 2、事务的特性:…

    数据库 2023年6月16日
    0138
  • 互联网校招指北

    这篇文章写着写着,突然觉得《紧急救援》中有一句台词很对: “不是幸运给你机会,而是因为够坚持,才有了幸运的机会” 共勉~ 时间跨度 一年共两次校招季,2 月…

    数据库 2023年6月6日
    0116
  • Java的日志框架之Logback

    前言 在Java的日志系统里面,有两个概念,一个叫做日志框架,如我们熟悉的Logback, Log4j, Log4j2, JDK自带的java.util.logging等;一个叫做…

    数据库 2023年6月11日
    0103
  • 23种设计模式之解释器模式(Interpreter)

    文章目录 概述 解释器模式的优缺点 解释器模式的结构和实现 * 模式结构 模式实现 JDK源码中的使用场景 总结 概述 解释器模式(Interpreter Pattern)提供了评…

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