警告:没有正在进行的事务(PostgreSQL)

问题描述 投票:0回答:1

我遇到了一些有趣的事情。我已经使用 pgAdmin 作为 GUI 执行了 SQL 脚本。适当地打开和关闭自动提交。

执行的脚本包含以下语句:

begin;
insert into test values (5);
rollback;
insert into test values (6);
rollback;
insert into test values (7);
commit;

我在两次执行中都得到了这个结果。

警告:没有正在进行的交易
警告:没有正在进行的交易
提交

显然这两个警告都是由第二次回滚和最后一次提交造成的。但是为什么尽管执行这些脚本时自动提交值不同,但这两次执行之间没有区别?

我对此进行了任何解释,但找不到任何对这种行为有用的东西。

对此有何解释?

postgresql pgadmin autocommit
1个回答
0
投票

第一次回滚将恢复自

begin
以来事务中的所有内容并 关闭事务

insert into test values (6);
在任何事务之外运行,并立即应用于数据库。它没有被回滚。第二次回滚什么也不做;没有公开交易。因此第一个警告,
'WARNING: there is no transaction in process'.

提交命令也不执行任何操作,因此出现第二个警告,

'WARNING: there is no transaction in process'.

我希望测试表包含 6 和 7。

© www.soinside.com 2019 - 2024. All rights reserved.