day67-sql中的事务
要么都成功要么都失败
事务原则: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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗