A要向B支付100元,而A的账户中只有90元,并且我们给定账户余额这一列的约束是,
不能小于0.那么很明显这条事务执行会失败,因为90-100=-10,小于我们给定的约束
了.
这个例子里,支付之前我们数据库里的数据都是符合约束的,但是如果事务执行成功了,我们的数据库数据就破坏约束了,因此事务不能成功,这里我们说事务提供了一致性的保证.然后我们再看个例子A要向B支付100元,而A的账户中只有90元,我们的账户余额列没有任何约束.但是我们业务上不允许账户余额小于0.因此支付完成后我们会检查A的账户余额,发现余额小于0了,于是我们进行了事务的回滚.
这个例子里,如果事务执行成功,虽然没有破坏数据库的约束,但是破坏了我们应用层的约束.而事务的回滚保证了我们的约束,因此也可以说事务提供了一致性保证(ps:事实上,是我们应用层利用事务回滚保证了我们的约束不被破坏).
最后我们再看个例子
A要向B支付100元,而A的账户中只有90元,我们的账户余额列没有任何约束
然后支付成功了.这里,如果按照很多人的理解,事务不是保证一致性么?直观上账户余额为什么能为负呢.但这里事务执行前和执行后,我们的系统没有任何的约束被破坏.一直都是保持正确的状态.所以,综上.你可以理解
一致性就是:应用系统从一个正确的状态到另一个正确的状态.
ACID就是说事务能够通过AID来保证这个C的过程.C是目的,AID都是手段.