0
我是Postgres的新手,所以这可能很明显(或者非常困难,我不确定)。用Postgres强制“锁定”和GO
我想迫使一张桌子或一排“锁定”一次至少几秒钟。这将导致第二次手术“等待”。
我使用golang和“github.com/lib/pq”与数据库交互。
我需要这个的原因是因为我正在监视postgresql的项目。谢谢你的帮助。
我是Postgres的新手,所以这可能很明显(或者非常困难,我不确定)。用Postgres强制“锁定”和GO
我想迫使一张桌子或一排“锁定”一次至少几秒钟。这将导致第二次手术“等待”。
我使用golang和“github.com/lib/pq”与数据库交互。
我需要这个的原因是因为我正在监视postgresql的项目。谢谢你的帮助。
您还可以使用select ... for update来锁定一个或多个行,以确定事务的长度。
基本上,它是这样的:
begin;
select * from foo where quatloos = 100 for update;
update foo set feens = feens + 1 where quatloos = 100;
commit;
这将执行对其中quatloos = 100的任何其它事务试图访问的那些行会被阻塞,直到提交或回滚具有FOO表中的行的专用行级锁一旦更新选择已经运行,就会发布。
理想情况下,这些锁应尽可能短。
参见:https://www.postgresql.org/docs/current/static/explicit-locking.html
设置事务隔离级别为SERIALIZABLE https://www.postgresql.org/docs/9.1/static/sql-set-transaction.html – Hackerman
[这](HTTPS://计算器.com/a/31845051/6069012)答案与你想要的非常相似。只要使用任何隔离级别是必要的。 – Gavin
@Hackerman那么,这很好。 – Gavin