当前位置: 首页 > news >正文

SQL(5)- 事务

1:事务简介

2:事务操作

3:事务四大特性

4:并发事务问题

5:事务隔离级别

一:事务简介

比如:转账,转账分为三个步骤(查询账户余额,xx账户余额-1000,xx账户余额+1000),而这三个步骤看成一个事务;

1:当执行完增删改之后,SQL事务默认自动提交;

use mydb2 create table account( id int auto_increment primary key comment '主键ID', name varchar(10) comment '姓名', money int comment '余额' )comment '账户表' show account insert into account (id,name,money) values(null,'张三',2000),(null,'王五',2000) --转账操作(张三给王五转1000) --正常操作 --1:查询张三余额 select * from account where name = '张三' --2:将张三账户余额-1000 update account set money = money - 1000 where name = '张三' 程序抛出异常 --3:将王五账户余额+1000 update account set money = money +1000 where name = '王五' ---异常操作(在2下面加层序抛异常) ---目前针对上面的SQL,相当于每一条SQL都是一个事务;所以要控制事务

二:事务操作

1:SQL默认自动提交事务;但是异常情况下,需要手动提交更保险

2:需要手动事务操作

1:select @@autocommit = 1 ; 表示事务自动提交

2:改为手动提交

set @@autocommit = 0

create table bank( id int auto_increment primary key comment '主键ID', name varchar(10) comment '姓名', money int comment '余额' )comment '余额表' show account insert into bank (id,name,money) values(null,'张三',2000),(null,'王五',2000) --查看事务是否是自动提交(1) select @@autocommit --设置为手动事务提交 set @@autocommit = 0 --转账操作(张三给王五转1000) --正常操作 --1:查询张三余额 select * from bank where name = '张三' --2:将张三账户余额-1000 update bank set money = money - 1000 where name = '张三' --3:将王五账户余额+1000 update bank set money = money +1000 where name = '王五' --4:提交事务 commit --5:当执行出错时,需要回滚 rollback

方法二:

-- 方法二: set @@autocommit = 1 --1:开启事务(手动提交事务) start transaction --1:查询张三余额 select * from bank where name = '张三' --2:将张三账户余额-1000 update bank set money = money - 1000 where name = '张三' 程序执行报错... --3:将王五账户余额+1000 update bank set money = money +1000 where name = '王五' --回滚(当前事务已经结束) rollback
http://www.jsqmd.com/news/185469/

相关文章:

  • SteamShutdown:智能下载完成自动关机工具完整指南
  • AudioShare:实现Windows到安卓设备音频实时传输的完整解决方案
  • Qwen3-VL跳水动作评分:空中姿态与入水效果分析
  • BiliRaffle终极指南:一键搞定B站动态抽奖的完整解决方案
  • Keil编译器下载v5.06:优化编译选项配置建议与分析
  • 如何用SteamShutdown彻底解决游戏下载后的关机烦恼?
  • B站无损音频下载实战指南:从入门到精通
  • Qwen3-VL再生资源分拣:塑料、金属、纸张分类
  • 我的电视:零基础玩转Android电视直播应用
  • Qwen3-VL煤矿井下安全:瓦斯积聚区域预警
  • SteamShutdown:智能自动关机工具,告别下载等待烦恼
  • Qwen3-VL网页推理实战:支持多尺寸MoE架构,云端边缘全覆盖
  • 基于STM32的智能小车PCB布局:深度剖析信号完整性
  • Qwen3-VL花样滑冰编排:动作衔接合理性建议
  • 突破系统限制:在Windows 10上完美运行Android应用的终极方案
  • Qwen3-VL热带雨林监测:树冠覆盖变化检测
  • SteamShutdown:游戏下载完成后自动关机的5种智能方案对比
  • MCreator完全指南:无需编程基础打造专属Minecraft模组的完整方案
  • 如何快速掌握Figma HTML插件:从网页到设计的完整操作指南
  • Windows Hook技术实战:深度解密钉钉消息防撤回实现原理
  • MediaPipe跨平台AI开发实战指南:从零构建实时视觉应用
  • Qwen3-VL招聘简历筛选:证件照与附件PDF信息提取
  • Multisim和NI Ultiboard联合调试实战案例解析
  • STM32 FSMC驱动LCD显示屏实战案例
  • 如何快速掌握XCOM 2模组管理:面向新手的完整指南
  • TIDAL音乐下载神器:从零开始的完整使用指南
  • OpenRGB:跨平台统一控制,终结RGB设备管理乱局
  • Qwen3-VL电视剧字幕生成:画面+语音双通道同步处理
  • 硬件I2C从设备地址识别原理图解说明
  • 脆骨症:终极器官系统革命,重塑Minecraft冒险体验