我有这个代码示例应该在 postgres 中采用行(元组)锁定,但它似乎采用表(关系)锁定:
with transaction.Atomic(savepoint=True, durable=False):
record = MyModel.objects.select_for_update().filter(pk='1234')
record.delete()
time.sleep(5)
raise Exception
通过在事务期间查看 pg_locks 我可以看到:
select locktype, database, relation::regclass, pid, mode, granted from pg_locks where pid <> pg_backend_pid();
据我所知,我应该在 locktype 中看到“元组”,因为我只锁定特定行而不是整个表