У меня есть таблица, содержащая внешний ключ, и я знаю имя столбца этого внешнего ключа.
Возможно ли, используя эту информацию, определить таблицу, к которой относится эта ссылка?
Причина этого заключается в том, что внешний ключ является динамическим и поэтому я не могу заранее определить связанную таблицу.
Если вы используете MySQL 5.1 или новее, вы можете использовать REFERENTIAL_CONSTRAINTS
таблицу из информационной схемы. Что-то вроде:
select references_table_name
from referential_constraints
where table_name = 'your_table';
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
может представлять интерес, если у вас есть составные клавиши.
select referenced_table_name, referenced_column_name
from information_schema.key_column_usage
where table_name = 'Yourtable' and column_name='id'