5.MySQL事务相关

事务需要解决的问题
列如:数据表中保存了某些人的银行账户余额,需要从A给B转账300快,①从A账户转出300②B账户被转入300,如果①执行成功②执行 报错,此时A钱减少B的钱没有增加,3000的去向就不指定

1.1概念

把一组操作封装到一起,称为一个共同的执行单元,此时执行整个事务就能避免上面的问题

1.2基本特性

(保证能够解决上述问题)
(1)原子性:事务中的若干操作,要么全部执行成功,要么全部不执行(此时的不执行不是真正的不执行,而是一旦中间某个步骤执行出错,就把前面已经执行完毕的步骤回滚(rollback)回去)
(回滚是借助逆向操作把原来操作造成的影响还原,列如A账户转出300的逆操作就是转入300)
(2)一致性:执行事务前后,数据始终处于合法的状态(列如转账操作减少账户余额的操作不能把账户余额减成负数)
(3)持久性:事务一旦执行完毕,此时对于数据的修改就是持久生效的(被写入磁盘)
数据存到磁盘中是有效的,数据存到内存中是短暂性的(重启之后数据消失)
(4)隔离性:涉及到”并发执行事务”

1.3使用

(1)开启事务:start transaction; – 表示接下来的操作都在同一个事务当中
(2)执行多条sql语句
(3)回滚或提交rollback/commit
Rollback全部失败,commit全部成功

Start transction;
Update accout set mony = mony – 200 where name = ‘阿里巴巴’, -- 阿里巴巴账户金额减少200
Update accout set mony = mony + 200 where name =’张九九’, -- 张九九账户金额增加200
Commit; -- 事务结束,开始正式执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值