📅  最后修改于: 2020-12-12 07:31:07             🧑  作者: Mango
事务具有四个属性。这些用于在事务之前和之后维护数据库中的一致性。
原子性涉及以下两个操作:
中止:如果事务中止,则所有更改均不可见。
提交:如果事务提交,则所做的所有更改都是可见的。
示例:假设后面的事务T由T1和T2组成。 A由600卢比组成,B由300卢比组成。将100卢比从帐户A转移到帐户B。
T1 | T2 |
---|---|
Read(A) A:= A-100 Write(A) |
Read(B) Y:= Y+100 Write(B) |
交易完成后,A包含500卢比,B包含400卢比。
如果事务T在事务T1完成之后但在事务T2完成之前失败,则将从A中扣除金额,但不将其添加到B。这表明数据库状态不一致。为了确保数据库状态的正确性,必须完全执行事务。
例如:必须在交易之前或之后维持总金额。
Total before T occurs = 600+300=900
Total after T occurs= 500+400=900
因此,数据库是一致的。在T1完成但T2失败的情况下,将发生不一致。