锁表直到事务提交

时间:2016-11-30 11:30:15

标签: database postgresql locking

我有两张与分类帐相关的表A和B. 许多交易平行地发生在A和B中。

面临的问题是:

[28] - A insert success for source entity_id: id001
[28] - B update success for destination entity_id: id002
[28] - A insert success for destination entity_id: id002
[71] - B update success for source entity_id: id001                  
[28] - commit success for [28] with amount 100

线程71在线程28将更改提交到分类帐之前更新表B.

这是因为postgres在进程使用它时会锁定表。

  1. 如何使线程等到当前线程完成提交?
  2. 如何锁定postgres中的记录? (以便用户可以访问表中的其他帐户)

1 个答案:

答案 0 :(得分:1)

Postgres默认锁定记录。请参阅docs

对于提供的日志,最后一个日志必须在提交事务之后。每当事务完成时,等待的线程立即接管,这必然是您的日志以这种方式出现的原因。