题
我只是读约RDBMS, 和一个财产数据库是 原子性。因此,如果金钱是撤销 从一个帐户,并转移到 另一个交易 将会发生完全或没有 在所有。有没有的部分 交易。但是如何实际上 保证?
Sql queries于上述情况
可能看起来像
(i)更新 accounts
设定的平衡=衡量在ac_num=101
(ii)更新 accounts
设定的平衡=余额+量在ac_num=102
这不意味着可确保原子..那么它是怎样实际上会发生?
解决方案
如果您
BEGIN TRANSACTION
UPDATE accounts set balance = balance - amount WHERE ac_num = 101
UPDATE accounts set balance = balance + amount WHERE ac_num = 102
COMMIT TRANSACTION
在数据库系统就会写笔记什么是已为在帐户101修改完成,然后如果帐户102的工作将失败,RDBMS使用这些笔记撤消工作在101。
此外,当它已经开始在考虑101的工作是需要在数据库上的锁,所以没有其他人可以在帐户101来读取更新,但尚未提交的数据。 (这里锁是基本上只是一个音符的地方:“我在这里工作,不要碰。”)
不隶属于 StackOverflow