mysql事务解析

本文深入探讨了MySQL事务的概念,包括其四大特性:原子性、一致性、隔离性和持久性。详细介绍了如何通过BEGIN、COMMIT、ROLLBACK等语句进行事务控制,以及如何使用SET命令手动控制事务。并通过实例演示了事务的回滚和使用SET设置控制事务的操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事务的概念

■是一种机制、一个操作序列,包含了- -组数据库操作命令,并且把所有的命令作为-个整体一起向系统提交或撤销操作请求,即这- -组数据库命令要么都执行, 要么都不执行
■是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元
■适用于多用户同时操作的数据库系统的场景,如银行、保险公司及证券交易系统等等
■通过事务的整体性以保证数据的-致性

事务的四大特性

1、原子性(Atomicity)
●事务是一个完整的操作,事务的各元素是不可分的
●事务中的所有元素必须作为-个整体提交或回滚
●如果事务中的任何元素失败,则整个事务将失败
2、-致性(Consistency)
●当事务完成时,数据必须处于一致状态
●在事务开始前,数据库中存储的数据处于一致状态
●在正在进行的事务中,数据可能处于不一致的状态
●当事务成功完成时,数据必须再次回到已知的一致状态事务的ACID特点2-2
3、隔离性(Isolation)
●对数据进行修改的所有并发事务是彼此隔离的,表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务
●修改数据的事务可在另-一个使用相同数据的事务开始之前访问这些数据,或者在另-一个使用相同数据的事务结束之后访问这些数
4、持久性(Durability)
●指不管系统是否发生故障,事务处理的结果都是永久的
●一旦事务被提交,事务的效果会被永久地保留在数据库中

事务控制语句

■MySQL事务默认是自动提交的,当SQL语句提交时事务便自动提交
■事务控制语句
●BEGIN或START TRANSACTION
●COMMIT
●ROLLBACK
●SAVEPOINT identifer
●RELEASE SAVEPOINT identifier
●ROLLBACK TO identifier
●SET TRANSACTION

事务的控制方法

■手动对事务进行控制的方法
●事务处理命令控制事务
◆bebin: 开始一个事务
◆commit: 提交- 个事务
◆rollback: 回滚一 个事务
●使用set命令进行控制
◆set autocommit=0:禁止自动提交
◆set autocommit=1:开启自动提交

事务的实操演示

mysql> begin; #事务开始
mysql> insert into user_info values (‘000011’,‘tom’,‘男’,‘021’,‘44’); #插入数据1
mysql> insert into user_info values (‘000012’,‘jack’,‘男’,‘021’,‘44’); #插入数据2
mysql> commit; #提交,将事务中执行的命令写入数据库,结束本事务

此过程中,若没有提交commit,就直接退出exit,则事务中的命令无法写入数据库。

rollback 回滚

mysql> begin; #事务开始
mysql> insert into user_info values (‘000013’,‘jack’,‘女’,‘021’,‘44’); #插入13数据
mysql> savepoint a; #存档点a
mysql> insert into user_info values (‘000014’,‘tom’,‘女’,‘021’,‘44’); #插入14数据
mysql> savepoint b; #存档点b
mysql> insert into user_info values (‘000015’,‘jim’,‘女’,‘021’,‘44’); #插入15数据
mysql> rollback to a; #回滚到存档点a,此时存档点a后面的语句被直接清除了,没有存档点b,也没有插入数据14和15.
mysql> rollback; #直接回到事务刚开始时,事务结束

使用set设置控制事务

set autocommit = 0; #禁止自动提交
set autocommit = 1; #开启自动提交,系统默认自动提交

当我们输出set autocommit = 0; 后,相当于开启了事务,所有的命令,必须手动提交才能写入数据库。
即使我们手动commit提交后,也只是将前面的命令提交了,提交后继续输出的命令仍然要手动提交,rollback也不能结束这种状态。
直到我们输出set autocommit = 1;这种状态才会结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值