什么是手动提交事务?只要不执行commit,那么mysql会认为你所执行的sql都是在一个事务当中,当commit的时候,假如成功了就都成功了,一旦执行的sql有异常,就全部回滚!
SELECT @@autocommit ;SET @@autocommit = 0 ;COMMIT;ROLLBACK;
注意:
- 上述的这种方式,我们是修改了事务的自动提交行为, 把默认的自动提交修改为了手动提交, 此时我们执行的DML语句都不会提交,需要手动的执行commit进行提交 。
- SET @@autocommit = 0 ; 设置手动提交 是临时生效(只对当前会话有效),一旦会话关闭就没了 。想要设置永久手动提交可以通过mysql的配置文件当中添加 autocommit=0 然后重启即可 。
文章插图
【Mysql中事务是什么?有什么用?】
sql测试:提交事务之后会发现数据根本没修改成功,原因就是执行过程遇到了报错,然后自动会进行回滚!
-- 先改为手动提交SET @@autocommit = 0 ;-- 1. 查询张三余额 select * from account where name = '张三'; -- 2. 张三的余额减少1000 update account set money = money - 1000 where name = '张三'; 出错了.... (这里是故意整的不加注释,来模仿执行当前事务执行到中间报错了)-- 3. 李四的余额增加1000 update account set money = money + 1000 where name = '李四';-- 4. 提交事务 COMMIT;
3、控制事务方式二(通过命令开启事务)除了上面所说的改为手动提交,还有一种就是通过sql来指定我要创建一个事务,commit的时候就是事务结束当前事务的时候 。- 开启事务: START TRANSACTION 或 BEGIN ;
- 提交事务: COMMIT;
- 回滚事务: ROLLBACK;
-- 开启事务 start transaction -- 1. 查询张三余额 select * from account where name = '张三'; -- 2. 张三的余额减少1000 update account set money = money - 1000 where name = '张三'; -- 3. 李四的余额增加1000 update account set money = money + 1000 where name = '李四'; -- 如果正常执行完毕, 则提交事务 commit; -- 如果执行过程中报错, 则回滚事务(commit失败的时候会自动执行回滚,不需要我们管) -- rollback;
三、事务四大特性事务应该具有4个属性:原子性、一致性、隔离性、持久性 。这四个属性通常称为 ACID特性 。- 原子性(atomicity) 。一个事务是一个不可分割的工作单位,事务中包括的操作 要么都做,要么都不做 。
- 一致性(consistency) 。事务必须是使 数据库从一个一致性状态变到另一个一致性状态 。一致性与原子性是密切相关的 。
- 隔离性(isolation) 。一个事务的执行不能被其他事务干扰 。即一个事务内部的操作和使用的数据对并发的其他事务是隔离的, 并发执行的各个事务之间不能互相干扰 。
- 持久性(durability) 。持久性也称永久性(permanence),指一个事务一旦提交,它 对数据库中数据的改变就应该是永久性的 。接下来的其他操作或故障不应该对其有任何影响 。
第一步:从建设银行卡的余额里扣除1000;
第二步:然后再从中国银行的卡的余额里增加1000 。
假如在第一步执行完之后服务器宕机了,那么显然第二步将无法完成,我的建设银行卡被扣了1000,但中国银行的卡却没增加,我将白白损失了1000块钱 。在数据库中,这就是所谓的“不一致性状态” 。
那么如何实现“一致性”呢?事实上,ACID中的AID都是为了实现C的 。事务的最终目的就是为了实现“ 一致性 ” 。如果转账的操作具有原子性,那么在中途出现错误的时候发生回滚,就不会出现不一致的情况,可见,“原子性”和“一致性”是紧密联系在一起的!
四、事务的隔离性这里再重点提一下ACID当中的 隔离性(isolation) 。
推荐阅读
- mysql服务如何查看是否启动?
- 谷歌Messages应用中的“Swipe actions“现在可以定制了
- Spring事务失效的各种场景
- 中国六大最美不夜城
- 原来,中国驾照才是“最牛国际”驾照
- 公司的常见内耗:陷于各种内耗之中,难怪发展不起来
- 这8种错误跑姿跑者经常中招,都存在哪些危害?
- 大量走路影响着床吗
- 降血压的纳豆激酶和纳豆是什么关系 中奇纳豆激酶
- 纪传体通史的代表作是哪部? 中国第一部纪传体通史是什么?