首页 新闻 赞助 找找看

事务的特性。。

0
[已解决问题] 解决于 2019-09-20 12:19

我经常看到在在讲数据库的ACID特性时,会以银行转账这个例子(银行转账:一个账户减少钱,一个账户增加钱)。但是现在有一种情况:我们在银行转钱时,会第二天才会到账这是怎么实现数据库的一致性?

DDiamondd的主页 DDiamondd | 初学一级 | 园豆:186
提问于:2019-09-18 23:50
< >
分享
最佳答案
1

你需要学习一个概念:状态机. 这个是重点.你一定要百度一下.深刻理解.
就是每个业务都分为几个状态.业务的操作就是在数据实体在这些状态迁移.
比如转账记录表,用户表.
转账记录表中新增一条:已扣款未到账状态,到账时间为24小时后的数据,
金额为已扣余额. 用户表余额相应扣除.
这一个操作是一致性的.
然后24小时候后.查询状态为 已扣款未到账状态, 到账时间<现在的 转账记录
如果有.则将状态改为 已扣款已到账 同时修改目标账户余额. 这个操作是一致性的.

总结.你以为这个业务持续了1天.不是的.这是2个持续一瞬间的业务.

奖励园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2019-09-19 02:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册