我有一个表,其主键在其他几个表中作为外键引用 . 例如:
CREATE TABLE `X` (
`X_id` int NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`X_id`)
)
CREATE TABLE `Y` (
`Y_id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`X_id` int DEFAULT NULL,
PRIMARY KEY (`Y_id`),
CONSTRAINT `Y_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
)
CREATE TABLE `Z` (
`Z_id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`X_id` int DEFAULT NULL,
PRIMARY KEY (`Z_id`),
CONSTRAINT `Z_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`)
)
现在,我不知道数据库中有多少表包含外键到X,如表Y和Z.是否有可用于返回的SQL查询:
-
具有外键到X的表的列表
-
这些表中的哪些表实际上具有外键中的值
7 回答
我写了一个小的bash onliner,你可以写一个脚本来获得一个友好的输出:
mysql_references_to:
所以执行:
mysql_references_to transaccion
(其中transaccion是一个随机表名)给出如下输出:最简单的:
1.打开phpMyAdmin
2.在左键单击数据库名称
3.在右上角找到"Designer"标签
所有约束都将在那里显示 .
列出数据库中的所有外键,包括描述
限制到表格表中的特定列
您可以在明智的名称
information_schema
表中找到所有与架构相关的信息 .您可能需要查看表
REFERENTIAL_CONSTRAINTS
和KEY_COLUMN_USAGE
. 前者告诉你哪些表被其他人引用;后者会告诉你他们的领域是如何相关的 .干得好:
如果您有多个具有相似表/列名称的数据库,您可能还希望将查询限制为特定数据库:
此解决方案不仅会显示所有关系,还会显示约束名称,这在某些情况下是必需的(例如,丢弃约束):
如果要检查特定数据库中的表,请添加以下内容:
MySQL 5.5参考手册:"InnoDB and FOREIGN KEY Constraints"