MySQL MyISAM Как мне увидеть все внешние ключи в и из таблицы или столбца? - PullRequest
0 голосов
/ 08 апреля 2019

Как получить список всех ограничений внешнего ключа, указывающих на (и ОТ) конкретную таблицу и / или определенный столбец из базы данных MySQL, созданной с помощью MyISAM?Это то же самое, что и этот вопрос InnoDB , но MyISAM специфично для MySQL.

Рассмотрим набор данных канонических авиакомпаний.Когда я запускаю следующие два запроса, основанные на принятом ответе связанного вопроса (TO) и ответе узла (FROM), мои результаты становятся пустыми.

Показать все внешние ключи, указывающие на 'mytable' :

SELECT 
  TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_SCHEMA, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_SCHEMA = 'airlines' AND  -- <database>
  REFERENCED_TABLE_NAME = 'airports';  -- <table> flights, carriers, planes

Показать все внешние ключи, указывающие на 'mytable' :

SELECT * FROM information_schema.TABLE_CONSTRAINTS 
WHERE information_schema.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'FOREIGN KEY' 
AND information_schema.TABLE_CONSTRAINTS.TABLE_SCHEMA = 'airlines'
AND information_schema.TABLE_CONSTRAINTS.TABLE_NAME = 'carriers';

Неправильно ли я опознал REFERENCED_TABLE_SCHEMA?Этот запрос работает только в InnoDB?

1 Ответ

3 голосов
/ 08 апреля 2019

https://dev.mysql.com/doc/refman/8.0/en/myisam-storage-engine.html говорит:

Поддержка внешнего ключа: нет

Не рекомендуется использовать MyISAM во все эти дни.MySQL явно движется к постепенному отказу от него.

См. Также мой ответ на MyISAM против InnoDB для хорошей демонстрации того, почему мы все должны избегать использования MyISAM.

...