jre*_*d42 2 sql postgresql locking
我试图找出如何锁定整个表格在Postgres中编写,但它似乎没有工作,所以我假设我做错了什么.
例如,表名是"用户".
LOCK TABLE用户处于EXCLUSIVE MODE;
当我检查视图pg_locks时,它似乎不在那里.我尝试过其他锁定模式也无济于事.
其他事务也能够执行LOCK功能,并且不会像我想象的那样阻塞.
在psql工具(8.1)中,我只需返回LOCK TABLE.
任何帮助都会很精彩.
小智 9
SQL标准中没有LOCK TABLE,而是使用SET TRANSACTION指定事务的并发级别.您应该能够在像这样的交易中使用LOCK
BEGIN WORK;
LOCK TABLE table_name IN ACCESS EXCLUSIVE MODE;
SELECT * FROM table_name WHERE id=10;
Update table_name SET field1=test WHERE id=10;
COMMIT WORK;
Run Code Online (Sandbox Code Playgroud)
我实际在我的数据库上测试了这个.
请记住,“锁定表”仅持续到事务结束。所以除非你已经在psql中发出了“开始”,否则它是无效的。
(在 9.0 中,这会出现错误:“LOCK TABLE 只能在事务块中使用”。8.1 非常旧)