
如果您不需要将其移植到另一个 RDBMS,那么使用目录表而不是标准信息模式会更快更简单
pg_catalog:
SELECt c.confrelid::regclass::text AS referenced_table , c.conname AS fk_name , pg_get_constraintdef(c.oid) AS fk_definitionFROM pg_attribute a JOIN pg_constraint c ON (c.conrelid, c.conkey[1]) = (a.attrelid, a.attnum)WHERe a.attrelid = '"Schema2"."TableB"'::regclass -- table nameAND a.attname = 'A_Id' -- column name AND c.contype = 'f'ORDER BY conrelid::regclass::text, contype DESC;
返回:
referenced_table | fk_name | fk_definition------------------+-------------------------+---------------------------------------------- Schema1.TableA | b1_fkey | FOREIGN KEY ("B_id") REFERENCES "Schema1"."TableA"("A_id")笔记- 额外的两列仅用于定向。根据您的 Q,您只需要第一列。
- 这将通过涉及给定列名的所有外键返回所有引用的表 - 包括对多个列的 FK 约束。
- 根据当前
search_path
. 名称也会在需要的地方(非法或大写字符、保留字等)自动转义。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)