Я пытаюсь найти все таблицы, которые имеют внешние ключи, указывающие на конкретную таблицу. Итак, я написал это:
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 уникальное_константное_имя не соответствует ни одному имени в табличных ограничениях.
Имена тоже немного смешные. Одним из них является «обозначение среды», с пробелом. Поле, на которое указывает FK, называется «environment_designator» с подчеркиванием. У другого есть unique_constraint_name «имя файла уникально», которое не соответствует чему-либо, что я вижу в определении таблицы «от» или «до».
Есть ли еще место, где я должен искать совпадение с именем unique_constraint_name?