从我在PostgreSQLdocumentation中读到的内容来看,查询
UPDATE accounts SET balance = balance + 100 WHERE account_id = 12345
是原子的,可以安全地并发执行。只有一个整数列被更新时才会出现这种情况吗?在我的Django应用程序中,我有这样一个查询(由ORM生成):
UPDATE "mytable" SET "counter" = ("mytable"."counter" + 1),
"owner" = NULL, "updated" = '2018-04-12T12:53:17.826257+00:00'::timestamptz
WHERE "mytable"."id" = 27; args=(1, datetime.datetime(2018, 4, 12, 12, 53, 17, 826257, tzinfo=<UTC>), 27)
由多个后台作业并发执行。在这种情况下,计数器会自动更新吗?我使用的是自动提交模式(Django默认)。你知道吗
您可能需要一个F表达式:https://docs.djangoproject.com/en/2.1/ref/models/expressions/#f-expressions
来自docs:F()的另一个有用的好处是,让数据库(而不是Python)更新字段的值可以避免争用条件。你知道吗
重新加载实例以从数据库获取更新的值。你知道吗
相关问题 更多 >
编程相关推荐