在postgresql中的存储过程中设置事务隔离级别

在postgresql中的存储过程中设置事务隔离级别,postgresql,Postgresql,我可以在postgresql的存储过程中设置事务级别吗? 在下面调用sp1时出错: 错误:在进行任何查询之前,必须调用设置事务隔离级别 您无法设置隔离级别,因为您已经在同一事务中执行了UPDATE语句 将事务设置为隔离级别readuncommitted不会有任何效果,因此您只需删除该语句即可。这种隔离级别在数据库中很有用,这些数据库采用阻塞读锁,以保持一致性为代价实现良好的并发性。但是,由于PostgreSQL中的写入程序不会阻止读卡器,因此您不需要这根拐杖。您读到错误了吗?此外,为什么要读取未

我可以在postgresql的存储过程中设置事务级别吗? 在下面调用sp1时出错:

错误:在进行任何查询之前,必须调用设置事务隔离级别


您无法设置隔离级别,因为您已经在同一事务中执行了
UPDATE
语句


将事务设置为隔离级别
readuncommitted
不会有任何效果,因此您只需删除该语句即可。这种隔离级别在数据库中很有用,这些数据库采用阻塞读锁,以保持一致性为代价实现良好的并发性。但是,由于PostgreSQL中的写入程序不会阻止读卡器,因此您不需要这根拐杖。

您读到错误了吗?此外,为什么要读取未提交的数据?如果查询由于错误的数据访问模式而阻塞,
readuncommitted
将无法修复任何问题。它可能会导致更严重的问题,如手册中的错误或丢失数据:SQL标准定义了一个附加级别,READ UNCOMMITTED。在PostgreSQL中,READ UNCOMMITTED被视为READ COMMITTED。
CREATE OR REPLACE PROCEDURE sp1()
LANGUAGE 'plpgsql'
AS $BODY$
begin
    update table1 set a=1;
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
update table1 set a=2;
END;
$BODY$;