事务
要做或者所做的事;
访问并可能更新数据库中各种数据项的一个程序执行单元;
作为单个逻辑工作单元所执行的一系列操作;
这些操作会作为一个整体向系统提交,要么全部执行,要么全不执行
一、四个特性
原子性(Atomicity)
事务中的操作要么都做,要么都不做;
例:A向B转账,转账的中途突然发生状况,没有原子性就会出现A已转账, 但是B却没有收到;
一致性(Consistency)
使数据库从一个一致性状态到另一个一致性状态;一个事务成功完成时保证数 据库中的数据一致;
例
A向B转账,转账成功;如果没有一致性就会出现,A已转账已扣款,但 是银行方面却没有显示A的扣款信息,A账号将会有无限制的额度;
隔离性
一个事务的执行不能被其他事务干扰;
例
A取款,同时B向A转账;如果A已取款,正要提交,于此同时B正向A 转账,也要提交;如果没有隔离性,就会出现B已经成功转账但是A却 没能收到;
持久性
一个事务一旦成功提交,它对数据库中的数据改变应该是永久性的;
例:
A向B转账,转账成功;如果没有持久性,就会因时间等因素出现A的扣 款金额又回到了A账号中;
二、需要事务的原因
保证数据库的完整性;
以A向B转账100为例;
1.系统确认A与B账号是否符合转账条件;
2.A账号-100;
3.B账号+100;
4.转账完成;
突发状况下就会出现A扣款成功,但B未收到等转账问题;
有事务的存在就会解决,如果A扣款成功B未成功收款,那么数据就会回滚,返回到没有转账的状态;