1

一开始我想指出我不是而且我从来都不是数据库管理员。我有经验和知识PL/SQLSQL但到目前为止,我接触的每个数据库最多有 50 个表,即使我手动创建实体之间的关系也并不难。

现在问题来了,当我有database超过 300 个表时,查找实体之间的关系并不容易。
让我们想象一下表格:

table person (
id serial PRIMARY KEY NOT NULL,
name varchar(45)
)

我自动有序列:

person_id_seq


你能告诉我是否有任何命令返回我正在使用的表person_id_seq吗?

4

2 回答 2

5

pg_depend

select *, pg_describe_object(classid, objid, objsubid)
from pg_depend 
where refobjid = 'person_id_seq'::regclass
于 2013-01-31T00:22:04.847 回答
4

克林的回答 - 使用pg_depend是完全明智的,并且是一种理智的方式来做到这一点。

我强烈建议您尝试使用像SchemaSpy这样的工具来生成数据库地图和可视化。这将有很大帮助,并让您有机会了解这些关系,而不仅仅是逐个探索它们。

如果您需要使您的查询可移植,那么您可以使用information_schemaPostgreSQL 特定的目录表来代替。此查询可移植地生成外键关系列表 - 该查询是为 MS SQL Server 编写的,但在 PostgreSQL 上很好。

于 2013-01-31T00:38:34.400 回答