概念
如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功要么同时失败。
操作
- 开始事务:
START TRANSACTION
- 回滚:
ROLLBACK
- 提交:
COMMIT
事务提交的两种方式
自动提交
- MySQL默认自动提交
- 一条DML(增删改)语句会自动提交一次事务
手动提交
- 先开启事务再提交
修改事务的默认提交方式
查看默认提交方式:
SELECT @@aucocommit;
1
代表自动提交,0
代表手动提交
- 修改默认提交方式:
SET @@autocommit = 0;
例
-- 创建表
CREATE TABLE account(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(10),
balabce DOUBLE
)
-- 添加数据
INSERT INTO account (name,balance) VALUES ('zhangsan',1000) , ('lisi',1000);
-- 张三给李四转账500元
-- 0.开始事务
START TRANSACTION;
-- 1.张三账户-500
UPDATE account SET balance = balance - 500 WHERE name = 'zhangsan';
-- 2.李四账户+500
UPDATE account SET balance = balance + 500 WHERE name = 'lisi';
-- 执行没问题,提交事务
COMMIT;
-- 发现问题,回滚
ROLLBACK;