文档 / SQL 状态码 / Class 40 事务回滚
40003 statement_completion_unknown
语句完成状态未知
ERROR 仅定义 参考 未实测
- 条件名
statement_completion_unknown- 宏名称
ERRCODE_T_R_STATEMENT_COMPLETION_UNKNOWN- 启用版本
- 7.4
- 状态
- 活跃
版本覆盖
速览
40003 描述语句完成状态不确定,通常是连接或协议边界上的结果核对问题。本批固定核心扫描没有提供安全的 SQL-only 自然触发方式。客户端超时或伪造 RAISE 都不能证明服务器完成状态不确定;重试前先核对持久化业务状态。
含义
40003 表示语句完成状态未知:连接或传输失败后,客户端无法判断服务器是否已经完成语句。它是结果可知性的边界,不能证明语句失败,也不能指示盲目回滚。
诊断
用请求标识或幂等键关联服务器日志、后端活动、提交记录和持久化业务状态。套接字异常通常没有服务器 SQLSTATE,固定扫描也没有安全的核心纯 SQL 40003 触发器。客户端超时、断链,以及在新会话上执行 ROLLBACK 都是独立事实,不能证明原语句已撤销。
处理
重试前先核对:在新的健康会话上查询权威持久化状态;只有同时匹配原请求和业务结果后,幂等键才能表示“已处理”;再由应用判断是否可重复执行。不要声称通用重试或回滚能解决未知完成状态,也不要用 RAISE 或本地超时伪造 40003。
可复现案例
在一次性实例上执行过的场景。
statement_completion_boundary PG 10 / 18
前置条件
- A runner-owned disposable target is provisioned.
触发
No connection-loss or uncertain-completion success claim is fabricated.
处置
When completion is uncertain, reconcile durable business state before retrying; this page does not claim a SQL-only reproduction.
清理
Drop the case schema with an owner connection.
版本
上面的锁定事实表记录项目快照范围内的目录存在情况。固定源码证据只覆盖下面声明的路径;不能仅从定义推导精确行为引入版本或更广的运行覆盖。
来源
证据
断言
每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。
-
40003 is the statement_completion_unknown condition in Class 40.
-
No distinct safe natural core runtime case for 40003 was selected from the fixed call scan.
同类 SQL 状态码
| 状态码 | 条件名 | 宏名称 | 严重等级 | 版本 |
|---|---|---|---|---|
| 40000 | transaction_rollback | ERRCODE_TRANSACTION_ROLLBACK |
ERROR | 7.4 |
| 事务回滚的类别码,具体原因见 40001 等子码。 | 活跃 | |||
| 40001 | serialization_failure | ERRCODE_T_R_SERIALIZATION_FAILURE |
ERROR | 7.4 |
| 并发事务无法串行化,需回滚后重试。 | 活跃 | |||
| 40002 | transaction_integrity_constraint_violation | ERRCODE_T_R_INTEGRITY_CONSTRAINT_VIOLATION |
ERROR | 7.4 |
| 事务级完整性约束违规的总括码,核心不直接使用。 | 活跃 | |||
| 40003 | statement_completion_unknown | ERRCODE_T_R_STATEMENT_COMPLETION_UNKNOWN |
ERROR | 7.4 |
| 语句完成状态不确定,重试前先核对业务状态。 | 活跃 | |||
| 40P01 | deadlock_detected | ERRCODE_T_R_DEADLOCK_DETECTED |
ERROR | 7.4 |
| 检测到死锁,事务因等待环被选为受害者中止。 | 活跃 | |||