Получение списка внешних ключей для таблицы MySQL
Сегодня думал, как бы получить список внешних ключей. Мы используем InnoDB, и таблицы связаны через Foreign keys.Сначала думал, что есть что-то типа SHOW FOREIGN KEYS FROM ‘tablename’; но оно не сработало. Тогда нашел два варианта.
Первый немного костыльный:
1 |
SHOW CREATE TABLE 'tablename'; |
Отображает SQL команду CREATE TABLE, которой была создана таблица, включая все внешние ключи. Но их надо парсить, а это не есть гут. И тогда нашел второй вариант:
1 2 3 4 |
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; |
Работает отличненько!
Спасибо большое, помогло.