【发布时间】:2011-02-10 16:26:55
【问题描述】:
我有一个包含 150 多个表的大型数据库,我最近收到了这些表。我只是想知道是否有一种简单的方法可以查看整个数据库的所有外键约束,而不是基于每个表。
【问题讨论】:
-
在这里查看安迪的答案:stackoverflow.com/questions/201621/…
标签: mysql foreign-keys database
我有一个包含 150 多个表的大型数据库,我最近收到了这些表。我只是想知道是否有一种简单的方法可以查看整个数据库的所有外键约束,而不是基于每个表。
【问题讨论】:
标签: mysql foreign-keys database
您可以为此使用INFORMATION_SCHEMA 表。例如,INFORMATION_SCHEMA TABLE_CONSTRAINTS 表。
应该这样做:
select *
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where CONSTRAINT_TYPE = 'FOREIGN KEY'
【讨论】:
这是我更喜欢得到有用的信息:
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'
【讨论】:
如果您只有 1 个数据库,则用户 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 '"';
【讨论】:
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 |
+----------------------------+--------------+---------------------+
【讨论】:
查询此代码
select constraint_name,
table_schema,
table_name
from information_schema.table_constraints
你会得到constraint_name,过滤database列表的table_schema。
【讨论】: