在psql上本地设置lock_timeout 10秒,如下所示:
SET LOCAL lock_timeout = 10000;
我在psql上得到了下面的警告:
警告:SET LOCAL只能在事务块中使用
那么,SET LOCAL lock_timeout = 10000;
根本不适用于下面的事务,所以lock table person;
等待10秒后永远锁定表而不超时,如下所示:
postgres=# SET LOCAL lock_timeout = 10000;
WARNING: SET LOCAL can only be used in transaction blocks
SET
postgres=# BEGIN;
BEGIN
postgres=*# LOCK TABLE person; # Waits to lock the table forever
那么,我如何解决警告,然后将SET LOCAL lock_timeout = 10000;
应用于以下事务?
如下所示:
警告:SET LOCAL只能在事务块中使用
您需要在运行BEGIN
之后在事务中使用SET LOCAL
,然后它可以正常工作,如下所示:
postgres=# BEGIN;
BEGIN
postgres=*# SET LOCAL lock_timeout = 10000;
SET
postgres=*# LOCK TABLE person; # Waits to lock the table for 10 seconds
ERROR: canceling statement due to lock timeout # Cancelled after 10 seconds
postgres=!#