поиск внешних ключей на сервере ms sql с помощью information_schema

Я пытаюсь найти все таблицы, внешние ключи которых указывают на конкретную таблицу. Итак, я написал следующее:

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?

5
задан Jay 10 November 2011 в 22:34
поделиться