手工事务-2022-12-1

-- MYSQL 是默认开启事务自动提交的
SET autocommit = 0 -- 关闭
SET autocommit = 1 -- 自动开启 默认的

-- 手动处理事务
SET autocommit = 0 -- 关闭 自动提交

-- 开启事务
START TRANSACTION -- 标记事务开始,从这个之后都在同一个事务中

INSERT xx
INSERT xx

-- 提交 持久化 (成功)
COMMIT

-- 回滚 回到原来的样子 (失败)
ROLLBACK

-- 结束事务
SET autocommit = 1 -- 开启自动开启 默认的

-- 设置保存点 了解即可 ,事务的保存点
SAVEPOINT
ROLLBACK TO SAVEPOINT 回滚到保存点
RELEASE SAVEPOINT 撤销保存点

 

-- 案例
CREATE DATABASE shop CHARACTER SET utf8 COLLATE utf8_general_ci
USE shop

CREATE TABLE `account`(
`id` INT(3) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) 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.00)

-- 模拟转账
SET autocommit = 0;
START TRANSACTION;
UPDATE account SET money = money-500 WHERE `name` = 'A';
UPDATE account SET money = money+500 WHERE `name` = 'B';
COMMIT; -- 永久性
ROLLBACK;
SET autocommit = 1;

posted @ 2022-12-01 15:24  Rui2022  阅读(18)  评论(0编辑  收藏  举报