3

我是 Postgres 的新手,所以这可能很明显(或者非常困难,我不确定)。

我想强制一个表或行一次“锁定”至少几秒钟。这将导致第二个操作“等待”。

我正在使用带有“github.com/lib/pq”的golang与数据库进行交互。

我需要这个的原因是因为我正在开发一个监控 postgresql 的项目。谢谢你的帮助。

4

1 回答 1

5

您还可以使用 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 表行上执行排他行级锁定。任何其他尝试访问这些行的事务都将被阻止,直到 select for update 运行后发出提交或回滚。

理想情况下,这些锁应该尽可能短。

请参阅:https ://www.postgresql.org/docs/current/static/explicit-locking.html

于 2017-08-24T21:38:40.053 回答