如何查找具有特定外键的所有表?

时间:2015-08-12 09:39:15

标签: sql postgresql

PostgreSQL 9.4

我在架构mailing中有一个名为mailing的表:

id      name
PK    varcahr(32)

是否可以查找具有mailing.id的外键的所有模式中的所有表?

1 个答案:

答案 0 :(得分:1)

我用一个查询来获取外键列表:
以下查询应该有所帮助:


    SELECT RC.CONSTRAINT_NAME FK_Name
    , KF.TABLE_SCHEMA FK_Schema
    , KF.TABLE_NAME FK_Table
    , KF.COLUMN_NAME FK_Column
    , RC.UNIQUE_CONSTRAINT_NAME PK_Name
    , KP.TABLE_SCHEMA PK_Schema
    , KP.TABLE_NAME PK_Table
    , KP.COLUMN_NAME PK_Column
    , RC.MATCH_OPTION MatchOption
    , RC.UPDATE_RULE UpdateRule
    , RC.DELETE_RULE DeleteRule
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC
    JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KF ON RC.CONSTRAINT_NAME = KF.CONSTRAINT_NAME
    JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KP ON RC.UNIQUE_CONSTRAINT_NAME = KP.CONSTRAINT_NAME
    WHERE KP.COLUMN_NAME='ID'