# 00000 — successful_completion

> PostgreSQL SQLSTATE 00000 表示成功完成，不是通常意义上的错误条件。
---

# 00000 — successful_completion

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

`00000` 是成功完成 SQLSTATE。PostgreSQL 错误机制在没有设置更具体代码且级别低于 `WARNING` 时默认选择它；成功命令不需要错误消息。

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

| 字段 | 值 |
| --- | --- |
| SQLSTATE | `00000` |
| 条件名 | `successful_completion` |
| 状态 | `有效` |
| 已知存在于 | `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_SUCCESSFUL_COMPLETION` |
| 别名 | `—` |

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

## 含义 {#meaning}

`elog.c` 的 `errstart` 按消息级别选择默认 SQLSTATE；低于 `WARNING` 时设置 `ERRCODE_SUCCESSFUL_COMPLETION`。这是错误机制中的源码级默认值，不是应用错误机制，也不表示普通命令会携带 `ErrorResponse`。

## 消息与诊断 {#messages}

命令完成通常由成功结果和命令标签表示，不携带 `ErrorResponse` SQLSTATE。在固定的 `elog` 路径中，只有没有更具体代码且消息级别低于 `WARNING` 时，错误机制才把 `00000` 作为默认值初始化。诊断消息必须同时保留实际协议消息类型和严重性；`00000` 不是 `ERROR` 的默认码，也不会把成功结果变成 `ErrorResponse`。

## 诊断 {#diagnosis}

先检查客户端结果状态和命令标签。如果客户端把 `00000` 与失败状态或 `ErrorResponse` 一起报告，应调查来源和客户端 API 的状态处理，不能把它解释为通常成功，也不要凭空寻找错误 detail。

## 处理 {#response}

将成功命令结果按完成处理。若 NoticeResponse 携带 `00000`，应把通知与命令结果分开记录；只有两者冲突时才调查客户端状态处理。不要仅因出现此代码就重试成功命令。

## 版本 {#versions}

锁定目录从 9.0.23 到 18.6 以及 19 Beta 3 均有 `00000`，`known_present_by` 为 7.4。18.6 固定的 `elog.c` 路径显示低于 `WARNING` 时的默认赋值；这不是每个客户端协议的运行实测。

## 相关 {#related}

[`01000`](../01000/) 是警告类；[`02000`](../02000/) 是无数据条件；[`P0002`](../p0002/) 是 PL/pgSQL 的 `no_data_found`。

## 来源 {#sources}

- [`errcodes.txt`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L79) — 定义，SHA-256 `6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba`.
- [`elog.c`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/error/elog.c#L449-L457) — 固定路径，SHA-256 `766d30a426ba1d9597657bd46fb890da3e37e4ae53a83d1245bf082ed9433c33`。
- [结构化证据](../../data/evidence/00000.json) — 固定来源、消息和运行边界。
