Получение списка внешних ключей для таблицы MySQL

Сегодня думал, как бы получить список внешних ключей. Мы используем InnoDB, и таблицы связаны через Foreign keys.Сначала думал, что есть что-то типа SHOW FOREIGN KEYS FROM ‘tablename’; но оно не сработало. Тогда нашел два варианта.

Первый немного костыльный:

SHOW CREATE TABLE 'tablename';

Отображает SQL команду CREATE TABLE, которой была создана таблица, включая все внешние ключи. Но их надо парсить, а это не есть гут. И тогда нашел второй вариант:

SELECT *
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA ='dbname' AND TABLE_NAME ='tablename' AND
CONSTRAINT_NAME <>'PRIMARY' AND REFERENCED_TABLE_NAME is not null;

Работает отличненько!

1 Comment

Leave a Comment