MySQL学习笔记之事务

1、什么时候会用到

      我们用一个简单的例子来说明:

      当我们银行转账的时候,首先我们要从自己银行把钱取出来,然后存入对方银行。

      这里有两个动作:

      1、从自己银行里面把钱取出来(update)

      2、存入对方银行(update)

      如果第一个动作执行成功,但是第二条数据执行失败,那么我们自己的钱取出来,但是对方却没有收到,我们就损失钱财了。

      现在我们的期望是:当1、2动作中任意一个执行失败,拿就回滚到执行SQL语句前的状态。执行成功就写入数据库。

      但现在提交到数据库的动作是由系统自动完成,所以我们现在就需要来接管这个自动提交的功能。

2、关键字

     autocommit(控制是否自动提交到服务器,1,为自动提交;0,为手动提交,系统默认1

      commit(提交)

      rollback(回滚到事务执行前)

      savepoint 标记点名称(设置标记,用来rollback到这个标记点)

2、实现语法

      1.set@@autocommit = 0;

         update 表名 set 字段名=新值 where 条件;
 comit;(执行成功后提交)/
rollback;(执行失败回滚)

         缺点:因为我们更改了autocommit 的值,那么以后的操作都是手动提交,这样不利于操作,所以我们需要使用下面的方法。

      2.start transaction;启动事务

          update 表名 set 字段名=新值 where 条件;
  commit;(执行成功后提交)/rollback;(执行失败回滚)
 savepoint 标记点名称;(设置标记),用于使用rollback to标记点名称(回滚到此点状态)

3、特性:ACID
1.原子性(A):事务其实就是执行一组SQL语句,他们中只要有一条语句执行失败,整个事务都失败。
2.一致性(C):即在事务开始之前和事务结束以后,数据库的设定是一样的。
3.隔离性(I):当使用事务对数据进行操作时,我们另外的会话是无法对此条数据进行操作的。我们的InnoDB使用的是数据行锁。
4.持久性(D):当事务成功,数据将提交到数据库,数据就被持久化了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值