Я пытаюсь найти все таблицы, внешние ключи которых указывают на конкретную таблицу. Итак, я написал следующее:
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
Это работает в 90% случаев, точнее, для 22 из 24 внешних ключей в базе данных, над которой я работаю. Но для 2 FK unique_constraint_name не соответствует ни одному имени в table_constraints.
Имена тоже немного забавные. Один из них - «обозначение среды» с пробелом. Поле, на которое указывает FK, называется «environment_designator» с подчеркиванием. Другой имеет unique_constraint_name «filename is unique», что не соответствует чему-либо, что я вижу в определении таблицы «от» или «до».
Есть ли еще какое-то место, где мне следует искать совпадение по unique_constraint_name?