在PostgreSQL中锁定表时,我得到一个错误:锁定表只能在事务块中使用
错误是在PostgreSQL中锁定表时,我得到一个错误:锁定表只能在事务块中使用,postgresql,locking,Postgresql,Locking,错误是 ERROR: LOCK TABLE can only be used in transaction blocks SQL state: 25P01 为什么会出现此错误,以及如何锁定表?关系数据库系统中的锁一直保持到当前事务结束 现在,PostgreSQL使用自动提交模式,因此,如果不使用BEGIN或start transaction显式启动事务,则每个语句都将在自己的事务中运行 不属于显式启动的多语句事务的显式表锁是无用的,因为它将在语句末尾消失。但它仍然可能通过阻止并发事务来损害它
ERROR: LOCK TABLE can only be used in transaction blocks
SQL state: 25P01
为什么会出现此错误,以及如何锁定表?关系数据库系统中的锁一直保持到当前事务结束 现在,PostgreSQL使用自动提交模式,因此,如果不使用
BEGIN
或start transaction
显式启动事务,则每个语句都将在自己的事务中运行
不属于显式启动的多语句事务的显式表锁是无用的,因为它将在语句末尾消失。但它仍然可能通过阻止并发事务来损害它们,因此它是被禁止的
在使用显式表锁之前,请重新考虑。在99%的情况下,它们是不必要的,这表明程序员不了解数据库并发技术或思考不够努力。显式锁会损害并发性,并会阻止自动真空(有时会带来灾难性的后果)