MySQL学习之SQL语法-TCL与事务(4)

1.事务

1.1.事务概述与特征

事务是一条或多条组成的执行单元,该执行单元要么全部成功,要么全部失败。
例如银行转账,张三给李四转了200块,如果转账成功,张三减少200,李四增加200;如果转账失败,两边余额不变。
事务的特征(简称ACID):

  • 原子性(Atomicity):一个事务中的操作,要么都完成,要么都失败;
  • 一致性(Consistency):数据库的完整性不能破坏;
  • 隔离性(Isolation):数据库允许多个事务并发执行,隔离性可以方式事务间的交叉执行导致数据不一致。
  • 持久性(Durability):事务一旦完成,对数据的操作是永久性的。
1.2.事务的并发执行可能会引起的问题
  • 脏读(dirty read):A事务读到B事务未提交的更改数据,B回滚事务后,A获取的数据不可靠;
  • 不可重复读(unrepeatable read):A事务读取到B事务已提交的更新数据,A事务中第一次读到初始数据和读取到的B事务已提交的数据不一致;
  • 虚读(phantom read):A事务读取到B事务已提交的新增数据;
  • 第一类丢失更新:A事务回滚中将B事务已提交数据覆盖;
  • 第二类丢失更新:A事务提交数据覆盖B事务已提交数据,造成B事务操作丢失。
1.3.事务隔离级别
  • 读未提交(READ UNCOMMITED)
  • 读已提交(READ COMMITED):可解决脏读;
  • 可重复读(REPEATABLE READ):可解决脏读和不可重复读;
  • 串行化(SERIALIZABLE)

2.TCL

# 关闭/开始事务自动提交
SET autocommit = 0/1(或OFF/ON;

# 事务提交
COMMIT;

# 创建标记点(保存点)
SAVEPOINT 标记点名
# 删除标记点
RELEASE SAVEPOINT 标记点名
# 事务回滚
ROLLBACK [TO 标记点名];

# 查询事务隔离级别
SELECT @@tx_isolation;

# 设置事务隔离级别
SET TRANSACTION 隔离级别

在MySQL中支持事务的存储引擎只有InnoDB。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值