前言
本篇文章主要介绍的是事务相关概念,结合MySQL进行分析。
事务的概念
事务是用户定义的一个数据库操作序列,是同一情况下下进行的多次对数据库的增删改的行为的集合。可以理解为在同一个流程中多次对数据库进行增删改等操作,我们可以称这些操作是在同一事务中。
事务的应用场景说明
在实际的业务开发中,有些业务操作要多次访问数据库。一个业务要发送多条 SQL 语句给数据库执行。需要将多次访问数据库的操作视为一个整体来执行,要么所有的 SQL 语句全部执行成功。如果其中有一条 SQL 语句失败,就进行事务的回滚,所有的 SQL 语句全部执行失败。
有一个最经典的转账的例子,张三给李四转账,张三账号减钱,李四账号加钱,加钱减钱是在同一事务中。
-- 创建数据表
CREATE TABLE account (
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
balance DOUBLE
);
-- 添加数据
INSERT INTO account (NAME, balance) VALUES ('张三', 1000), ('李四', 1000);
模拟张三给李四转 500 元钱,一个转账的业务操作最少要执行下面的 2 条语句:
张三账号-500
李四账号+500
-- 1. 张三账号-500
UPDATE account SET balance = balance - 500 WHERE id=1;
-- 2. 李四账号+500
UPDATE