选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / SQL 状态码 / Class 25 事务状态无效

25004 inappropriate_isolation_level_for_branch_transaction

分支事务隔离级别不适用

ERROR 仅定义 参考 不适用

类别
Class 25 事务状态无效
严重等级
ERROR
条件名
inappropriate_isolation_level_for_branch_transaction
宏名称
ERRCODE_INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION
启用版本
7.4
状态
活跃

版本覆盖

速览

25004 表示分支事务使用了不适用的隔离级别。固定 PostgreSQL 18.6 核心解析调用扫描没有该码的直接报错组,因此不声称存在普通 SQL 复现。

含义

这是分支事务条件,区别于 40001 可串行化失败,也区别于普通事务中 SET TRANSACTION ISOLATION LEVEL 的检查。

诊断

诊断时应同时保留分支 API、请求的隔离级别和事务状态。现有源码证据不足以借用其他隔离级别错误的报文。

处理

修正分支 API 的隔离级别协商后,只有 API 明确定义可重试时才重试。普通 SQL 会话应按实际返回的 SQLSTATE 诊断。

可复现案例

在一次性实例上执行过的场景。

branch_transaction_boundary PG 10 / 18

前置条件

  • A runner-owned disposable target is provisioned.

触发

Source/definition evidence only; no natural SQL trigger is claimed.

断言

  • No fabricated SQL trigger is included; the selected run records a definition/source boundary.

处置

Follow the explicit transaction or source boundary described by the case.

清理

Drop the case schema with an owner connection.

源码报文与运行边界

固定 errcodes.txt 定义了该条件和宏;raw/calls/REL_18_6.jsonl 的解析调用扫描没有直接报错组,因此本批不发布报文模板,也不构造自然 SQL 触发器。

适用边界与案例

本批运行器在 PostgreSQL 18.6 与 10.21 的选定 case 均为 not_applicable,只记录源码边界,没有可复制的 SQL 触发过程。结构化证据 · 案例导出

版本与边界

生成事实记录锁定的目录快照。两个 runner 目标都是 case 状态为 not_applicable 的源码边界观察,不把自然触发计入运行覆盖。

来源

证据

断言

每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。

  • 25004 is inappropriate_isolation_level_for_branch_transaction in Class 25.

    核实方式Read the fixed condition row and macro.

    不覆盖The condition name alone does not identify a supported ordinary-SQL trigger.

    来源src/backend/utils/errcodes.txt

  • The exhaustive resolved PostgreSQL 18.6 call scan contains no direct 25004 report group; no natural SQL reproduction is claimed.

    核实方式Scan fixed source call records for SQLSTATE 25004.

    不覆盖Do not substitute a different isolation-level error or a hand-written RAISE example.

    来源raw/calls/REL_18_6.jsonl

运行记录

目标服务器版本结果覆盖案例
latest 18.6 (Homebrew) not_applicable branch_transaction_boundary
pg10 10.21 (Debian 10.21-1.pgdg90+1) not_applicable branch_transaction_boundary

同类 SQL 状态码

状态码 条件名 宏名称 严重等级 版本
Class 25 事务状态无效 Invalid Transaction State 13 个
25000 invalid_transaction_state ERRCODE_INVALID_TRANSACTION_STATE ERROR 7.4
事务状态无效的类别码,多见于内部状态检查。 活跃
25001 active_sql_transaction ERRCODE_ACTIVE_SQL_TRANSACTION ERROR 7.4
命令不能在活动事务块中执行,如 VACUUM。 活跃
25002 branch_transaction_already_active ERRCODE_BRANCH_TRANSACTION_ALREADY_ACTIVE ERROR 7.4
分支事务已经活动,范围窄于 25001。 活跃
25003 inappropriate_access_mode_for_branch_transaction ERRCODE_INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION ERROR 7.4
分支事务使用了不适用的访问模式。 活跃
25004 inappropriate_isolation_level_for_branch_transaction ERRCODE_INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION ERROR 7.4
分支事务使用了不适用的隔离级别。 活跃
25005 no_active_sql_transaction_for_branch_transaction ERRCODE_NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION ERROR 7.4
分支事务缺少活动的 SQL 事务。 活跃
25006 read_only_sql_transaction ERRCODE_READ_ONLY_SQL_TRANSACTION ERROR 7.4
命令试图在只读事务中写入数据。 活跃
25007 schema_and_data_statement_mixing_not_supported ERRCODE_SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED ERROR 7.4
事务中不支持混合模式语句与数据语句。 活跃
25008 held_cursor_requires_same_isolation_level ERRCODE_HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL ERROR 7.4
持有游标要求与操作相同的事务隔离级别。 活跃
25P01 no_active_sql_transaction ERRCODE_NO_ACTIVE_SQL_TRANSACTION ERROR 7.4
操作需要活动事务块,如自动提交下的 SAVEPOINT。 活跃
25P02 in_failed_sql_transaction ERRCODE_IN_FAILED_SQL_TRANSACTION ERROR 7.4
事务已失败,后续语句被拒绝直到 ROLLBACK。 活跃
25P03 idle_in_transaction_session_timeout ERRCODE_IDLE_IN_TRANSACTION_SESSION_TIMEOUT ERROR 9.6
会话在开放事务中空闲超时,被服务器终止。 活跃
25P04 transaction_timeout ERRCODE_TRANSACTION_TIMEOUT ERROR 17
事务运行超过 transaction_timeout 被终止。 活跃