# 25000 — 事务状态无效（invalid_transaction_state）

> PostgreSQL SQLSTATE 25000：事务状态无效的来源与诊断参考。
---

# 25000 — 事务状态无效

## 速览 {#at-a-glance}

`25000` 是 Class 25 的宽泛“事务状态无效”。锁定的 18.6 源码把它用于并行操作中执行 utility、创建保存点等内部状态；本批不声称有安全的普通 SQL 复现。

<!-- BEGIN SQLSTATE FACTS: generated by scripts/generate.py; do not edit -->

| 字段 | 值 |
| --- | --- |
| SQLSTATE | `25000` |
| 条件名 | `invalid_transaction_state` |
| 状态 | `有效` |
| 已知存在于 | `7.4` |
| 锁定快照 | `9.0.23, 9.1.24, 9.2.24, 9.3.25, 9.4.26, 9.5.25, 9.6.24, 10.23, 11.22, 12.22, 13.23, 14.24, 15.19, 16.15, 17.11, 18.6, 19beta3` |
| 宏 | `ERRCODE_INVALID_TRANSACTION_STATE` |
| 别名 | `—` |

<!-- source facts: data/errcodes/25000.json -->
<!-- END SQLSTATE FACTS -->

## 含义 {#meaning}

事务状态不能简单等同于“存在一个事务”。`25001` 表示活动事务阻止命令，`25P02` 表示失败事务；18.6 调用扫描还显示堆、事务、utility、GUC 和保存点路径中的并行操作保护。

## 诊断 {#diagnosis}

先区分失败事务、活动事务块限制和并行操作状态，保留服务器原始 SQLSTATE 与报文。内部并行路径需要日志和上下文，不能把普通“事务已打开”误认成 `25000`。

## 处理 {#response}

遵循命令的事务/并行契约；可恢复的客户端状态按精确回滚或重试边界处理。不要用 RAISE 制造自然结果。

## 源码报文模板 {#messages}

- `parallel-savepoint`：primary `cannot define savepoints during a parallel operation`（ERROR）
- `parallel-utility`：primary `cannot execute %s during a parallel operation`（ERROR）

## 适用边界 {#case}

本批没有为 `25000` 构造自然 SQL 触发器；请把它视为源码/协议边界，而不是可直接复制的复现脚本。[结构化证据](../../data/evidence/25000.json) · [案例导出](../../data/cases/25000.json)。

作者证据 ID：`identity`, `core-paths`, `boundary`。选定运行记录：—。

## 版本与边界 {#versions}

锁定目录在 `7.4` 已观察到该条件，并在列出的正式快照中均存在。18.6 源码扫描确认了本文引用的并行操作路径；由于所需内部状态不是安全的独立 SQL 前置条件，本文没有运行案例。

## 相关 {#related}

对比 [25001 活动 SQL 事务](../25001/)、[25P02 失败 SQL 事务](../25p02/) 和 [40001 序列化失败](../40001/)。

## 来源 {#sources}

- [`src.errcodes.18.6`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt) (SHA-256 `6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba`)
- `src.calls.REL_18_6` (SHA-256 `9ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf`)
- [`src.xact.18.6`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/access/transam/xact.c#L4385-L4387) (SHA-256 `75b012c0b047d1dc905a30975c244beec366e45eac0dbf109fd21bcd611a8e39`)
- [`src.utility.18.6`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/tcop/utility.c#L425-L429) (SHA-256 `7aae5d07628b6debf8456d1d4ea96f28912232192e56ea25773b4c4b61235a00`)
