Можно ли определить таблицу, на которую ссылается внешний ключ?

У меня есть таблица, содержащая внешний ключ, и я знаю имя столбца этого внешнего ключа.

Можно ли, используя эту информацию, определить таблицу, на которую ссылается этот ключ?

Причина этого в том, что внешний ключ является динамическим, поэтому я не могу заранее определить связанную таблицу.


person Rupert Madden-Abbott    schedule 15.09.2010    source источник
comment
Возможный дубликат MySQL: как программно определить отношения внешнего ключа?. Я не рекомендую использовать динамическую связь внешнего ключа - правильно смоделируйте ситуацию.   -  person OMG Ponies    schedule 15.09.2010


Ответы (2)


Если вы используете MySQL 5.1 или более позднюю версию, вы можете использовать REFERENTIAL_CONSTRAINTS таблица из информационной схемы. Что-то типа:

select references_table_name
  from referential_constraints
 where table_name = 'your_table';
person Pablo Santa Cruz    schedule 15.09.2010

SELECT CONSTRAINT_NAME, ORDINAL_POSITION, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE
TABLE_NAME = 'table_name' AND
TABLE_SCHEMA = 'database_name' AND
REFERENCED_TABLE_SCHEMA = 'database_name';

ORDINAL_POSITION может представлять интерес, если у вас есть составные ключи.

person Arc    schedule 15.09.2010