# 2B000 — dependent_privilege_descriptors_still_exist（依赖权限描述符仍存在）

> PostgreSQL SQLSTATE 2B000 的来源与机制边界参考。
---

# 2B000 — dependent_privilege_descriptors_still_exist（依赖权限描述符仍存在）

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

`2B000` 是目录定义中的依赖权限描述符条件。本批固定源码扫描没有解析出独立的核心 `2B000` 抛出点，因此本页只记录定义边界，不把角色、REVOKE 或 DROP 结果擅自标成 2B000。普通对象依赖见 `2BP01`。

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

| 字段 | 值 |
| --- | --- |
| SQLSTATE | `2B000` |
| 条件名 | `dependent_privilege_descriptors_still_exist` |
| 状态 | `有效` |
| 已知存在于 | `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_DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST` |
| 别名 | `—` |

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

## 含义 {#meaning}

`2B000` 表示 2B 类中的依赖权限描述符条件。固定的 PostgreSQL 18.6 调用扫描没有解析出独立的核心 `ereport` 路径，因此必须把它与依赖对象仍存在的 `2BP01`，以及 `42501`、`0LP01` 等具体授权/授权操作错误分开。

## 诊断 {#diagnosis}

如果扩展或特定版本路径报告该码，应保留组件指出的对象或权限描述符，并收集主报文、DETAIL、HINT。不能从失败的 `DROP` 或 `GRANT` 推断出 `2B000`：固定核心扫描没有选定的自然触发器；代表性对象依赖路径由依赖遍历器报告 `2BP01`。

## 处理 {#response}

不能只凭类别名执行 `DROP ... CASCADE`、撤销权限或重试。先找出拥有该描述符的组件，按其文档修复，再核对 ACL/依赖状态。在解析出真实服务器路径前，这一页只是源码/定义边界，不能保证普通 SQL 事务能产生 `2B000`。

## 版本 {#versions}

上面的锁定事实表记录项目快照范围内的目录存在情况。固定源码证据只覆盖下面声明的路径；不能仅从定义推导精确行为引入版本或更广的运行覆盖。

## 相关 {#related}

可对照[2BP01 依赖对象仍存在](../2bp01/)；两者属于不同源码类别。

## 来源 {#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`）
