我正在尝试查找所有具有指向特定表的外键的表。因此,我编写了以下代码:
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个外键来说,unique_constraint_name与table_constraints中的任何名称都不匹配。
这些名称也有点奇怪。其中一个是“environment designator”,有一个空格。该外键指向的字段名为“environment_designator”,有一个下划线。另一个具有唯一约束名“filename is unique”,但我在“from”表或“to”表的定义中看不到任何相应的内容。
是否有其他地方可以查找unique_constraint_name的匹配项?