繁体   English   中英

使用Postgres和GO强制“锁定”

[英]Force a “lock” with Postgres and GO

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

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

我正在将golang与“ github.com/lib/pq”一起使用来与数据库进行交互。

我需要这个的原因是因为我正在研究一个监视postgresql的项目。 谢谢你的帮助。

您也可以使用select ...进行更新,以锁定事务长度的一行或多行。

基本上,它就像:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM