2010-04-21 1 views
32

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

+0

ответ Знакомства Энди здесь: https://stackoverflow.com/questions/201621/how-do-i-see- all-foreign-keys-to-a-table-or-column – omarjebari

ответ

53

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

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

select * 
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
where CONSTRAINT_TYPE = 'FOREIGN KEY' 
+0

Похоже, это то, что мне нужно. Благодаря! –

+1

Есть ли способ фактически указать имя поля внешнего ключа? – JoeTidee

5

Принятая в настоящее время ответ пользователем 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 '"'; 
0

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   | 
+----------------------------+--------------+---------------------+ 
1

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

select constraint_name, 
    table_schema, 
    table_name 
from information_schema.table_constraints 

Вы получите constraint_name и фильтровать table_schema, который является список database.

Look at This

6

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

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'