mysqsl事务

一、基本介绍

​ 事务用于保证数据的==一致性==,它由==一组相关的dml语句组成==,该组的 dml 语句要么==全部==成功,要么==全部==失败。

如转账业务

事务的理解

当有一个需求,需要多个操作一起完成

image-20221113200620146

一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

  • 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
  • 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
  • 隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
  • 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失

二、基本使用

启动事务

1
2
3
4
5
6
7
8
9
10
11
12
start transaction;---开始一个事务(这里会设置一个默认保存点)
or
SET AUTOCOMMIT=0

savepoint 保存节点名--设置保存点
rollback to 保存结点名 --回退到指定的保存结点()
A-->B--->C
注意:
1.如果直接从 C 回退到 A 。那 A 之后的保存点会被全部删除。
即不能再回滚到 B 了
rollback --不加保存点名就直接回退全部事务操作
commit --提交事务,所有操作生效,==不能回退==

三、注意的点