Redrock Postgres 文档
主页 切换暗/亮/自动模式 切换暗/亮/自动模式 切换暗/亮/自动模式 返回首页
编辑页面

25P02 在失败的 SQL 事务中

错误: 当前事务已中止,命令被忽略,直到事务块结束

您可能会遇到如下所示的错误消息。

ERROR: current transaction is aborted, commands ignored until end of transaction block

在 Redrock Postgres 中,通常情况下,如果SQL语句在执行过程中出现错误,该语句中的所有影响都将被回滚。此操作是一个语句级回滚。

当我们执行ALTER CONSTRAINTconstraint_nameINITIALLY IMMEDIATE命令,要将延迟检查的约束设置为IMMEDIATE时,会立即对该约束进行检查,需要追溯整个事务执行过的操作是否满足约束检查。此时如果检查出现错误,该SQL语句产生的错误是不能被恢复的,会让事务进入中止的状态。

如果我们处于中止的事务中,Postgres 会拒绝除ROLLBACK/ABORT之外的所有命令。

这通常是由于应用程序未正确处理事务中的错误,并保持事务打开而不是回滚而导致的。这可能还有其他意外情况,因此强烈建议修复应用程序代码以正确响应事务中的异常。