# 事务

什么是事务?
一个事务就是一个完整的业务逻辑。
是一个最小的工作单元。

例如转账的业务逻辑,就是一个最小的工作单元,要么同时成功,要么同时失败,不可再分。

本质:就是多条 DML 语句同时成功或者同时失败

只有 DML 语句和事务有关系,其他语句无关。
insert
update
delete
因为以上三个语句是操作数据库中数据的

事务是怎么做到同时成功或者同时失败的?

InnoDB:提供一组用于记录事务特性活动的日志文件

在事务执行的过程中,每一条DML的操作都会被记录到“事务特性活动的日志文件”中

在事务执行的过程中,可以提交事务,也可以回滚事务

提交事务: 清空事务性活动的日志文件,将数据全部彻底持久化到数据库表中
    标志着事务的结束,并且是一种全部成功的结束

回滚事务: 将之前所有的DML操作全部撤销,并且清空事务性活动的日志文件
    回滚事务标志着事务的结束,并且是一种全部失败的结束

# 提交事务、回滚事务

提交事务:commit
回滚事务:rollback (回滚只能回滚到上一次的提交点)

事务对应的单词:transaction

Mysql中默认情况下是自动提交事务的(自动提交)

开启事务
    start transaction;

# 事务特性

A:原子性
    说明事务是最小工作单元,不可再分

C:一致性
    所有事务要求,在同一个事务中,所有操作必须同时成功,或者同时失败,以保证数据的一致性

I:隔离性
    A事务和B事务之间具有一定的隔离

D:持久性
    事务最终结束的一个保障,事务提交,将没有保存到硬盘上的数据保存到硬盘上