事务
要么都成功要么都失败
事务原则:ACID原子性,一致性,隔离性,持久性
原子性:要么一起成功要么一起失败
一致性:针对一个事务操作前后状态一致
持久性:事务结束后的数据不会随着外界原因导致数据丢失,事务一旦提交不会逆转
隔离性:排除其他事务对本次事务的影响
脏读
一个事务读取了另一个事务未提交的数据
不可重复读
在一个事务内部读取数据,多次读取结果不同
虚读
在一个事务内读取到别的事务插入的数据,导致前后读取不一样
执行事务
-- 事务 -- mysql默认开启事务提交 SET autocommit =0 -- 关闭 SET autocommit =1 -- 开启(默认) -- 手动处理事务 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' -- b加500 COMMIT -- 提交事务 ROLLBACK -- 回滚 SET autocommit = 1;
标签:autocommit,事务,SET,name,--,money,day67,sql From: https://www.cnblogs.com/GUGUZIZI/p/17094969.html