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

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

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

25003 inappropriate_access_mode_for_branch_transaction

分支事务访问模式不适用

ERROR 仅定义 参考 不适用

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

版本覆盖

速览

25003 表示分支事务使用了不适用的访问模式。固定的 PostgreSQL 18.6 核心调用扫描没有解析出直接报错点,因此本文记录定义边界,不虚构普通 SQL 触发器。

含义

该条件名属于 Class 25,描述的是分支事务管理。不要把它当作 25006 只读 SQL 事务、25P01 缺少事务块或应用自定义异常的同义词。

诊断

若分支事务 API 报出此码,应保留精确 SQLSTATE、API 操作、访问模式和事务上下文。当前固定核心证据没有确认服务器报文模板,也没有安全的 SQL 复现。

处理

先按分支事务 API 的契约修正访问模式,再决定是否重试。不要用 RAISE 替代缺失路径,也不要把普通只读语句误按此码重试。

可复现案例

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

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 目标记录的是仅源码边界,不是自然触发通过。

来源

证据

断言

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

  • 25003 is inappropriate_access_mode_for_branch_transaction in Class 25.

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

    不覆盖The name describes a branch-transaction access-mode condition; it is not a proof that ordinary SQL can raise it.

    来源src/backend/utils/errcodes.txt

  • The exhaustive resolved PostgreSQL 18.6 call scan contains no direct 25003 report group, so this batch does not claim a natural SQL trigger or message template.

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

    不覆盖An extension or a branch-transaction API may have a separate path; this page does not invent one.

    来源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 被终止。 活跃