我有一个带有字段User
的Django模型balance
,并使用它保留balance_last_updated
DateTimeField
。
为了更新无竞争条件的余额,我需要以原子方式阅读,然后在我的Django视图中设置balance_last_updated
。这样,任何更新余额的线程都会在不同时间段内这样做(正确吗?)。
我该怎么做?请注意,我使用的是MySQL MyISAM表,seem to not support Django transactions。
答案 0 :(得分:2)
如果您使用的是Django 1.4,则可以使用select_for_update
来实现此目的。但是,如果数据库后端支持事务,则仅。 MyISAM没有,所以我建议切换到InnoDB引擎或PostgreSQL,如果原子性(或一般的ACID)对你的项目有任何重要性。