思路流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DX70duxW-1616134302298)(C:\Users\cheng zhimin\AppData\Roaming\Typora\typora-user-images\image-20210319134216077.png)]
语法结构
- ================= 事务 ===================
-- mysql时默认开始事务提交的
set autocommit = 0 -- 关闭自动提交
set autocommit = 1 -- 开启自动提交
-- 开始事务
START TRANSACTION -- 标记一个事务开始,从这个语句往后的 sql 语句都在一个事务中
-- 事务结束
set autocommit = 1 -- 开启自动提交
-- 了解知识点
savepoint 保存点名 -- 设置一个事物的保存点
ROLLBACK TO SAVEPOINT 保存点名 -- 回滚到保存点
release savepoint 保存点名 -- 撤销保存点
实例
-- 转账
-- 创建数据库shop
CREATE DATABASE shop CHARACTER SET utf8 COLLATE utf8_general_ci
USE shop -- 切换当前数据为 shop
-- 创建 accout 数据表
CREATE TABLE `account`(
`id` INT(3) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(30) NOT NULL,
`money` DECIMAL(9,2) NOT NULL,
PRIMARY KEY(`id`)
)ENGINE = INNODB DEFAULT CHARSET = utf8
-- 插入数据
INSERT INTO `account`(`name`,`money`) VALUES ('A',2000.00),('B',10000)
-- 模拟转账事务
SET autocommit = 0 -- 关闭自动提交
START TRANSACTION -- 开启一个事务
UPDATE account SET money = money-500 WHERE `name` = 'A' -- A减500
UPDATE account SET money = money+500 WHERE `name` = 'B' -- A加500
COMMIT -- 提交事务,结果就会被持久化了
ROLLBACK -- 事务回滚
SET autocommit = 1 -- 恢复默认值