sql列出了主键的所有外键

时间:2011-09-18 17:44:17

标签: sql

假设“table_users”上的“user_id”字段是10个其他表上10个外键的主键。我想在“table_users”上重命名主键字段,但它不允许我重命名它,因为有10个其他表中的10个外键链接到它。我可以知道如何知道10个表中哪个有外键?什么是用于显示具有外键的10个表的SQL代码?

我正在使用phpMyAdmin和InnoDB引擎。我知道SHOW ENGINE INNODB STATUS可以完成这项工作,但它每次都会显示1个表格,这意味着我需要重复重命名主键字段10次并运行SHOW ENGINE INNODB STATUS 10次以找出所有10个表格表。找出10个表是否还有其他更好的解决方案?

2 个答案:

答案 0 :(得分:2)

您可以尝试查询INFORMATION_SCHEMA数据库:

select ku.* 
from INFORMATION_SCHEMA.table_constraints tc   
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE ku ON
(tc.CONSTRAINT_NAME = ku.CONSTRAINT_NAME and tc.CONSTRAINT_SCHEMA =   
ku.CONSTRAINT_SCHEMA )
where constraint_type='FOREIGN KEY' and ku.REFERENCED_TABLE_NAME =     
'your_table_name'

答案 1 :(得分:0)

作为mysql root用户,您可以使用

解决此问题
SET foreign_key_checks = 0;

这将禁用约束系统,并允许您更改表定义。当然,所有外键约束都将被打破,需要删除并重新创建。

SET foreign_key_checks = 1;

将重新打开约束系统。

Mysql还有一个可以查询的数据字典。 This previous question完全涵盖了这一点,所以我不打算重复这些信息。