事务
ACID:
原子性 Automicity
一致性 Consistency
隔离性 Isolation
持久性 Durability
事务
--mysql是默认开启事务自动提交的
set autocommit=0 --关闭
--事务开启
start transaction
--提交(持久化)
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,
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' -- A减500
UPDATE account SET money=money+500 WHERE `name`='B' -- A加500
COMMIT;-- 提交事务
ROLLBACK; -- 回滚
SET autocommit=1;