这篇文章主要介绍了PostgreSQL 查看表的主外键等约束关系详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。
我就废话不多说了,大家还是直接看代码吧~
postgres=# \d+ pg_depend
Table "pg_catalog.pg_depend"
Column | Type | Modifiers | Storage | Stats target | Description
-------------+---------+-----------+---------+--------------+-------------
classid | oid | not null | plain | | 系统OID
objid | oid | not null | plain | | 对象OID
objsubid | integer | not null | plain | |
refclassid | oid | not null | plain | | 引用系统OID
refobjid | oid | not null | plain | | 引用对象ID
refobjsubid | integer | not null | plain | |
deptype | "char" | not null | plain | | pg_depend类型
Indexes:
"pg_depend_depender_index" btree (classid, objid, objsubid)
"pg_depend_reference_index" btree (refclassid, refobjid, refobjsubid)
Has OIDs: no
--BTW:OID是Object Identifier的缩写,是对象ID的意思,因为是无符号的4字节类型,不够足够大,所以一般不用来做主键使用,仅系统内部,比如系统表等应用,可以与一些整型数字进行转换。与之相关的系统参数是default_with_oids,默认是off
postgres=# \d pg_constraint
Table "pg_catalog.pg_constraint"
Column | Type | Modifiers
---------------+--------------+-----------
conname | name | not null -- 约束名
connamespace | oid | not null -- 约束所在命名空间的OID
contype | "char" | not null -- 约束类型
condeferrable | boolean | not null -- 约束是否可以推迟
condeferred | boolean | not null -- 缺省情况下,约束是否可以推迟
convalidated | boolean | not null -- 约束是否经过验证
conrelid | oid | not null -- 约束所在的表的OID
contypid | oid | not null -- 约束所在的域的OID
conindid | oid | not null -- 如果是唯一、主键、外键或排除约束,则为支持这个约束的索引;否则为0