什么是数据库事务,为啥要有?
事务:由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个整体不可分割
假如A转账给B 100 元,先从A的账户里扣除 100 元,再在 B 的账户上加上 100 元。如果扣完A的100元后,还没来得及给B加上,银行系统异常了,最后导致A的余额减少了,B的余额却没有增加。所以就需要事务,将A的钱回滚回去,就是这么简单。
为啥要有?保证数据的最终一致性
事务的特性
四个典型特征:原子性,一致性,隔离性,持久性
原子性:事务作为一个整体被执行,包含在其中的对数据库的操作要么全部执行,要么都不执行。
一致性:几个并行执行的事务,其执行结果必须与按某一顺序 串行执行的结果相一致。假如A账户给B账户转10块钱,不管成功与否,A和B的总金额是不变的。
隔离性:事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务透明。
持久性:事务完成提交后,事务对数据库所作操作更改,持久保存在数据库中
1.脏读(dirty read)
原因:
指事务读取到其他事务未提交的值
例子: