事务学习(一)

一、事务概述

1.1 什么是事务?

事务 是数据库提供的一个特性,它将多个操作组成一个不可分割的单元:要么全部成功,要么全部失败。

1.2 经典案例:转账

以"冠希给美美转账1000元"为例:

  1. 从美美账户扣款1000元

  2. 向冠希账户加款1000元

这两步必须同时成功或同时失败,不能出现扣款成功但加款失败的情况。

在MySQL数据库中使用事务,提供两种方式

* 模拟转账的例子,冠希给美美转钱

二、操作事务的两种方式

第一种方式(使用命令的方式)

start transaction; ‐‐ 开启事务

update t_account set money = money ‐ 1000 where username = '冠希'; update t_account set money = money + 1000 where username = '美美';

commit; ‐‐ 提供事务(事务已经结束了,数据永久的保存到数据库中了) rollback; ‐‐ 回滚事务(事务已经结束了,数据回滚到最初始化的状态)

第二种方式(设置MySQL事务不默认提交的方式)

MySQL数据库的事务是默认提交的。

update t_account set money = money ‐ 1000 where username = '冠希';‐‐ 这一条语句默认使用了一个事务。

set autocommit = off或者0 --设置让MySql的数据库的事务不默认提交

编写SQL语句(执行完,都没有提交)

sql1

sql2

需要手动的提交或者回滚

commit;

rollback;

二、在 MySQL 中操作事务

建表语句

sql 复制代码
e table t_account(    
id int primary key auto_increment,        
username varchar(20),        
money double        
);    
    
insert into t_account values (null,'美美',10000);    
insert into t_account values (null,'冠希',10000);    
insert into t_account values (null,'小凤',10000);    
insert into t_account values (null,'熊大',10000);    
insert into t_account values (null,'熊二',10000);

在cmd窗口操作,找到所需操作的表

从美美账户扣款1000元

能够操作成功,给美美账户加款1000元,恢复原来数据

开启事务 start transaction;

回滚数据rollback

不开启事务,回滚,回滚无效

给美美账户加款1000元,恢复数据

开启事务,从美美账户扣款1000元,向冠希账户加款1000元

回滚,回滚成功

开启事务,并提交事务

回滚,回滚失败

设置MySQL事务不默认提交

更新数据

回滚,能够回滚成功

再次更新,并提交,回滚,回滚失败

相关推荐
统计学小王子9 小时前
数学建模十万个为什么(一)
经验分享·数学建模
边境悍匪10 小时前
蜗牛学苑 Java 智能体学习 Day42|项目周开发技术汇总 1 思维导图复盘
java·开发语言·spring boot·学习·spring
陕西企来客10 小时前
企来客科技发布企业知识图谱GEO优化专项服务:从“信息曝光“升级到“实体置信度“
经验分享·ai
Gyr010 小时前
浅刷了一遍51CTO软考题库客观题及其解析(4)
学习·软考·知识点·信息安全工程师
螺蛳粉 螺蛳粉10 小时前
MySQL 分布式集群系列 · 第五篇——全方位对比:NDB、MGR、主从复制、分库分表怎么选?
数据库·分布式·mysql
是隼人10 小时前
buuctf-pwn [NewStarCTF 2023 公开赛道]stack migration(64位栈迁移)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
ι:11 小时前
单相桥式全控整流仿真从零复现教学
windows·学习·matlab·simulink
CAYA-11 小时前
模电笔记1.1 半导体基础与 PN 结
经验分享·笔记·学习方法
传奇开心果编程12 小时前
【Rust入门练中学】 第3课:数据类型
开发语言·学习·rust
humors22112 小时前
今年我正在看、看完和还没看的书单(不定期更新)
学习·阅读·读书·书单·书籍