Просмотреть все ограничения внешнего ключа для всей базы данных MySQL - PullRequest
39 голосов
/ 21 апреля 2010

У меня есть большая база данных с более чем 150 таблицами, которые мне недавно передали. Мне просто интересно, есть ли простой способ просмотра всех ограничений внешнего ключа для всей БД, а не для каждой таблицы.

Ответы [ 5 ]

68 голосов
/ 21 апреля 2010

Для этого вы можете использовать таблицы INFORMATION_SCHEMA. Например, таблица INFORMATION_SCHEMA TABLE_CONSTRAINTS.

Что-то вроде этого должно сделать это:

select *
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where CONSTRAINT_TYPE = 'FOREIGN KEY'
15 голосов
/ 18 апреля 2016

Это то, что я предпочитаю получать полезную информацию:

SELECT CONSTRAINT_NAME,
       UNIQUE_CONSTRAINT_NAME, 
       MATCH_OPTION, 
       UPDATE_RULE,
       DELETE_RULE,
       TABLE_NAME,
       REFERENCED_TABLE_NAME
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA = 'your_database_name'
6 голосов
/ 25 февраля 2014

В настоящее время принятый ответ пользователя RedFilter будет работать нормально, если у вас есть только одна база данных, но не при наличии многих.

После ввода use information_schema; используйте этот запрос, чтобы получить внешние ключи для name_of_db:

select * from `table_constraints` where `table_schema` like `name_of_db` and `constraint_type` = 'FOREIGN KEY'

Используйте этот запрос, чтобы получить внешние ключи для name_of_db, сохраненные в доступный для записи файл output_filepath_and_name:

select * from `table_constraints` where `table_schema` like "name_of_db" and `constraint_type` = 'FOREIGN KEY' into outfile "output_filepath_and_name" FIELDS TERMINATED BY ',' ENCLOSED BY '"';
1 голос
/ 25 мая 2014

Запросить этот код

select constraint_name,
   table_schema,
   table_name
from   information_schema.table_constraints

Вы получите ограничение_имя и отфильтруете таблицу_схему, которая является списком database.

Посмотрите на это

0 голосов
/ 01 апреля 2014

SQL:

select constraint_name,
       table_schema,
       table_name
from   information_schema.table_constraints
where  constraint_schema = 'astdb'

Выход:

+----------------------------+--------------+---------------------+
| constraint_name            | table_schema | table_name          |
+----------------------------+--------------+---------------------+
| PRIMARY                    | astdb        | asset_category      |
| PRIMARY                    | astdb        | asset_type          |
| PRIMARY                    | astdb        | asset_valuation     |
| PRIMARY                    | astdb        | assets              |
| PRIMARY                    | astdb        | com_mst             |
| PRIMARY                    | astdb        | com_typ             |
| PRIMARY                    | astdb        | ref_company_type    |
| PRIMARY                    | astdb        | supplier            |
| PRIMARY                    | astdb        | third_party_company |
| third_party_company_ibfk_1 | astdb        | third_party_company |
| PRIMARY                    | astdb        | user                |
| PRIMARY                    | astdb        | user_role           |
+----------------------------+--------------+---------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...