【发布时间】:2016-07-26 16:26:27
【问题描述】:
我有以下查询来返回外键详细信息:
SELECT
tc.constraint_name,
tc.table_name,
kcu.column_name,
ccu.table_schema AS foreign_table_schema,
ccu.table_name AS foreign_table_name,
ccu.column_name AS foreign_column_name,
pg_catalog.pg_get_constraintdef(pg_constraint.oid, true) AS foreign_definition
FROM
information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
JOIN pg_constraint
ON pg_constraint.conname = tc.constraint_name
WHERE constraint_type = 'FOREIGN KEY'
由此,我可以获得重建外键所需的大部分信息。唯一缺少的是关于更新和删除信息(尽管这可以从foreign_definition 中解析出来)。我一直在想办法在不解析的情况下接收这些详细信息,但到目前为止我还没有运气。
有没有人知道我可以找到哪个表的更新和删除详细信息?
这是专门为 Postgres 设计的。
【问题讨论】:
-
你试过
information_schema.referential_constraints吗?..有两列update_rule和delete_rule
标签: sql database postgresql database-schema