一个 对象标识符类型(也称为 OID 别名类型)是一种特殊的 数据类型,作为各种 系统目录 表条目的 OID 的别名,它使得可以根据该行中引用的对象的名称来引用此类表中的行,而不是使用数字 OID。这极大地简化了涉及常见 系统目录 查找的许多操作,并且无需显式连接系统目录表。
例如,将表行的 tableoid 系统列强制转换为 regclass 将显示该行所属的表的名称
postgres=# SELECT tableoid::regclass, * FROM foo; tableoid | id ----------+---- foo | 1 (1 row)
(上面的示例的实际用途有限,但如果在分区表上运行类似的查询,将显示每一行实际所属的表)。
可用的对象标识符类型
截至 PostgreSQL 19,以下对象标识符类型可用
| 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2 | 函数 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| regclass | to_regclass() |
|||||||||||||||||||||||||
| regcollation | to_regcollation() |
|||||||||||||||||||||||||
| regconfig | 不适用 | |||||||||||||||||||||||||
| regdatabase | to_regdatabase() |
|||||||||||||||||||||||||
| regdictionary | 不适用 | |||||||||||||||||||||||||
| regnamespace | to_regnamespace() |
|||||||||||||||||||||||||
| regoper | to_regoper() |
|||||||||||||||||||||||||
| regoperator | to_regoperator() |
|||||||||||||||||||||||||
| regproc | to_regproc() |
|||||||||||||||||||||||||
| regprocedure | to_regprocedure() |
|||||||||||||||||||||||||
| regrole | to_regrole() |
|||||||||||||||||||||||||
| regtype | to_regtype() |
变更历史
- PostgreSQL
regdatabase已添加(提交 bd09f024)
- PostgreSQL 13
regcollation已添加(提交 a2b1faa0)
- PostgreSQL 9.5
- PostgreSQL 8.3
- PostgreSQL 7.3
参考资料
- PostgreSQL 文档: 对象标识符类型
