Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PostgreSQL中锁定表时,我得到一个错误:锁定表只能在事务块中使用_Postgresql_Locking - Fatal编程技术网

在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%的情况下,它们是不必要的,这表明程序员不了解数据库并发技术或思考不够努力。显式锁会损害并发性,并会阻止自动真空(有时会带来灾难性的后果)