事务测试并实现转账

事务

mysql是默认开启事务自动提交的

SET autocommit = 0 --关闭
SET autocommit = 1 --开启(默认)

手动处理事务

SET autocommit = 0 

事务开启

START TRANSACTION --标记一个事务的开启,从这以后的sql都在同一个事务内

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(30) NOT NULL
`money` DECIMAL(9,2) NOT NULL  --一个9位数,小数点为2位
PRIMARY KEY(`id`)
)engin = 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 - 500 WHERE `name` = 'A'  --A减500
UPDATE account SET money + 500 WHERE `name` = 'B'  --B加500

COMMIT    --提交,无法撤回
ROLLBACK  --回滚撤销上面操作

SET autocommit = 1
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页