MySQL中的事务(Transaction)详解

一、事务的定义

        一个事务(Transaction)是有一条或者多条对数据库操作的SQL语句所组成的一个不可分割的整体。只有事务中的所有操作都操作完成,才将整个事务提交的数据库,如果执行过程中有部分事务失败,那么事务就要回滚到最初的状态,也就是事务具有原子性。因此,事务要么全部执行完成,要么全部不执行。

为什么要使用事务呢?

直白的说就是可以有反悔的机会,数据库的操作具有持久性,所以使用事务后,一旦出现操作错误,则可以有机会恢复,重新操作,以免造成数据紊乱。

  • 经典的事务案例:银行转账问题

二、事务的特征(ACID)

1. 原子性(Atomicity)

事务是一个不可分割的整体,即对数据的修改要么全部执行,要么全不执行,不存在部分事务执行完成。

例如:银行转账是一个完整的业务,可以看作是转入、转出两个部分,当两个部分都完成,才可以认为是转账成功,不能只完成其中一个,即不能部分执行。

2. 一致性(Consistency)

一个事务执行前和执行后,数据库的数据必须保持一致性的状态。

例如:银行转账问题,A向B转账,A账户金额减少,B账户的金额增长,整个系统中金额不发生改变,满足了一致性。

3. 隔离性(Isolation)

当两个或者多个事务并发执行时,为了保证数据的安全性,从而将一个事务的内部操作与其他的事务的操作隔离开,不被其他的事务所看到。

4. 持久性(Durability)

事务完成之后,对数据库中的数据修改是永久性的,即使数据库出现故障重启,也应该恢复数据。

三、事务的基本操作

1. 查看事务是否自动提交

select @@autocommit;
  • MySQL事务默认为自动提交。
  • 1:自动事务提交 0:表示手动事务提交。

2. 修改是否自动提交

set autocommit = 0;
  • 使用set autocomit=0操作,设置事务为手动提交。

3. 事务操作

3.1 开启事务(start transaction)

begin;
start transaction;
  • begin和start transaction命令开启一个事务。

3.2 事务提交(commit)

commit;
  • 当事务中所有的SQL执行完成后,通过commit将事务提交到数据库。

 3.3 事务回滚(rollback)

  • 在事务执行过程中当有SQL执行失败将事务回滚,回滚到最初状态。

注意:直接退出客户端,事务中的变更不会默认保存。

3.4 保存点(savepoint point1)

  • savepoint point1 设置一个保存点为point1的保存点
  • rollback to point1:事务回滚到保存点1


 以上都是学习过程中的知识点总结,如果有错误或者有疑问,欢迎一起交流吖~~    /手动抱拳/ 

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值