跳转到主要内容

23000 — 完整性约束冲突(integrity_constraint_violation)

PostgreSQL SQLSTATE 23000:完整性约束冲突的来源与诊断参考。

23000 — 完整性约束冲突

速览

23000 是 Class 23 完整性约束冲突的总类名,不是可以替代具体错误码的自然触发码。客户端应使用服务器返回的完整五字符 SQLSTATE。

字段
SQLSTATE 23000
条件名 integrity_constraint_violation
状态 有效
已知存在于 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_INTEGRITY_CONSTRAINT_VIOLATION
别名

含义

该类包含违反声明完整性规则的行和模式操作。锁定的 errcodes.txt 将具体机制分到 230012350223503235052351423P01 等子码;18.6 核心调用扫描没有解析出的 23000 报文路径,因此本文不伪造运行复现。

诊断

先读取精确 SQLSTATE,再查看 constraint_nametable_namecolumn_nameschema_name 以及主报文/DETAIL。把所有 Class 23 错误压成 23000 会丢失修复所需的对象和机制。

处理

保留原语句及事务边界,按具体子码修复数据或约束;显式事务报错后先回滚。不要用 RAISE ... ERRCODE 23000 冒充自然服务器机制。

源码报文模板

适用边界

本批没有为 23000 构造自然 SQL 触发器;请把它视为源码/协议边界,而不是可直接复制的复现脚本。结构化证据 · 案例导出

作者证据 ID:identity, specific-codes, handling。选定运行记录:—。

版本与边界

锁定目录在 7.4 已观察到该总类,并在列出的 9.0–18.6 正式快照中均存在。18.6 调用扫描确认了有界源码观察;本文不把它解释为扩展或未来版本都不可能发出该码。

参见 23001 RESTRICT 冲突23502 非空约束冲突23514 CHECK 冲突23P01 排除约束冲突23505 唯一约束冲突

来源

  • src.errcodes.18.6 (SHA-256 6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba)
  • src.calls.REL_18_6 (SHA-256 9ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf)