5

我正在尝试查找具有指向特定表的外键的所有表。所以我写了这个:

select t1.TABLE_NAME as pointsfrom, t2.TABLE_NAME as pointsto
        from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS r
        join INFORMATION_SCHEMA.TABLE_CONSTRAINTS t1 on t1.CONSTRAINT_NAME=r.CONSTRAINT_NAME
        join INFORMATION_SCHEMA.TABLE_CONSTRAINTS t2 on t2.CONSTRAINT_NAME=r.UNIQUE_CONSTRAINT_NAME
        where t2.table_name = @mytable

对于我正在处理的数据库中的 24 个外键中的 22 个,这在 90% 的时间里有效。但是对于 2 个 FK,unique_constraint_name 与 table_constraints 中的任何名称都不匹配。

名字也有点搞笑。其中之一是“环境指示符”,带有空格。FK 指向的字段名为“environment_designator”,带有下划线。另一个有一个 unique_constraint_name 的“文件名是唯一的”,它与我在“从”或“到”表的定义中看到的任何内容都不对应。

还有其他地方我应该在 unique_constraint_name 上寻找匹配项吗?

4

1 回答 1

7

尝试这个:

SELECT OBJECT_NAME(parent_object_id), OBJECT_NAME(referenced_object_id)
    FROM sys.foreign_keys
    WHERE referenced_object_id = OBJECT_ID(@mytable)
于 2011-11-10T22:37:54.907 回答