需要掌握:数据库事务-银行转账问题
说明
事务的4个特性,或满足4个条件,简称:ACID
原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都执行成功,有一个失败,数据就恢复到初始值
一句话理解:一个业务操作,或者 点一下按钮执行的操作,这一个操作 可能包含 多次 增、删、改 数据库
如:银行转账、电商下订单
一致性(Consistency)
事务前后 数据 的完整性必须保持一致。
如:银行转账,预期的结果是:马云账户减少1亿,李雷的账户增加1亿。由于程序发生错误,马云账户成功减少1亿,但李雷的账户没有增加1亿,这就是 数据不一致
隔离性(Isolation)
当 多个用户 同时 增、删、改、查 数据库 时,数据库为每一个用户 开启的事务,不能被 其他事务 干扰 ,多个并发事务之间要相互 隔离。
例子
在马云给我转账 1亿 的同时,马化腾给我转账 2亿,那么最终我得账户应该是3 亿,而不会发生互相覆盖的情况
在plsql操作oracle数据时,执行
for update后,就开启了事务,在提交、回滚前,其他for update语句都处于等待状态
持久性(Durability)
事务提交后,永久保存到数据库中,即使系统发生故障也不会丢失
感谢:
https://blog.csdn.net/dengjili/article/details/82468576
https://blog.csdn.net/chosen0ne/article/details/10036775
