百科 / SQL 状态码 / Class 25 无效的事务状态
25003 inappropriate_access_mode_for_branch_transaction
分支事务访问模式不适用
ERROR 仅定义 参考 不适用
- 条件名
inappropriate_access_mode_for_branch_transaction- 宏名称
ERRCODE_INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION- 最早已知存在
- 7.4
- 状态
- 有效
手册收录:8.1、8.2、8.3、8.4、9.0、9.1、9.2、9.3、9.4、9.5、9.6、10、11、12、13、14、15、16、17、18、19、20。此处仅表示同版本手册收录,运行证据仍以原核验构建为准。
版本覆盖
版本条依据已采样构建显示;灰色版本可能尚未采样,悬停可查看。手册链接随版本选择,源码和运行证据保持原核验构建。
25003 — 分支事务访问模式不适用(inappropriate_access_mode_for_branch_transaction)
速览 {#at-a-glance}
25003 表示分支事务使用了不适用的访问模式。固定的 PostgreSQL 18.6 核心调用扫描没有解析出直接报错点,因此本文记录定义边界,不虚构普通 SQL 触发器。
含义 {#meaning}
该条件名属于 Class 25,描述的是分支事务管理。不要把它当作 25006 只读 SQL 事务、25P01 缺少事务块或应用自定义异常的同义词。
诊断 {#diagnosis}
若分支事务 API 报出此码,应保留精确 SQLSTATE、API 操作、访问模式和事务上下文。当前固定核心证据没有确认服务器报文模板,也没有安全的 SQL 复现。
处理 {#response}
先按分支事务 API 的契约修正访问模式,再决定是否重试。不要用 RAISE 替代缺失路径,也不要把普通只读语句误按此码重试。
源码报文与运行边界 {#messages}
固定 errcodes.txt 定义了该条件和宏;raw/calls/REL_18_6.jsonl 的解析调用扫描没有直接报错组,因此本批不发布报文模板,也不构造自然 SQL 触发器。
适用边界与案例 {#case}
本批运行器在 PostgreSQL 18.6 与 10.21 的选定 case 均为 not_applicable,只记录源码边界,没有可复制的 SQL 触发过程。结构化证据 · 案例导出
版本与边界 {#versions}
锁定目录按上方生成事实记录该条件的已知边界和快照。运行状态明确为不适用:两个选定 runner 目标记录的是仅源码边界,不是自然触发通过。
相关 {#related}
25004 分支事务隔离级别、25006 只读 SQL 事务、25P01 没有活动 SQL 事务。
来源 {#sources}
src.errcodes.18.6(SHA-2566e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba)src.calls.REL_18_6—raw/calls/REL_18_6.jsonl(SHA-2569ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf)
来源
证据
断言
每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。
-
25003 is inappropriate_access_mode_for_branch_transaction in Class 25.
-
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.
运行记录
| 目标 | 服务器版本 | 结果 | 覆盖案例 |
|---|---|---|---|
| latest | 18.6 (Homebrew) | not_applicable | 案例:branch_transaction_boundary |
| pg10 | 10.21 (Debian 10.21-1.pgdg90+1) | not_applicable | 案例:branch_transaction_boundary |
可复现案例
在一次性实例上执行过的场景。
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.
同类 SQL 状态码
| 状态码 | 条件名 | 宏名称 | 严重等级 | 版本 |
|---|---|---|---|---|
| 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.0 起已知 |
| 会话在开放事务中空闲超时,被服务器终止。 | 有效 | |||
| 25P04 | transaction_timeout | ERRCODE_TRANSACTION_TIMEOUT |
ERROR | 17.0 起已知 |
| 事务运行超过 transaction_timeout 被终止。 | 有效 | |||