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

0

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

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

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

Теги:
foreign-keys
innodb

3 ответа

2
Лучший ответ

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

select references_table_name
  from referential_constraints
 where table_name = 'your_table';
1
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 может представлять интерес, если у вас есть составные клавиши.

0
select referenced_table_name, referenced_column_name
 from information_schema.key_column_usage
where table_name = 'Yourtable' and column_name='id'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню