【发布时间】:2020-11-22 23:05:13
【问题描述】:
我有大约 10 个查询同时更新一行,所以我想知道它们之间有什么区别
UPDATE account SET balance = balance + 1000
WHERE id = (SELECT id FROM account
where id = 1 FOR UPDATE);
和
BEGIN;
SELECT balance FROM account WHERE id = 1 FOR UPDATE;
-- compute $newval = $balance + 1000
UPDATE account SET balance = $newval WHERE id = 1;
COMMIT;
我正在使用 PosgreSQL 11,那么正确的解决方案是什么?这两个解决方案中的多事务会发生什么?
【问题讨论】:
标签: postgresql concurrency transactions postgresql-11