我有一个表,它的主键在其他几个表中作为外键引用。例如:
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 中具有外键的表的列表
- 以及哪些表实际上在外键中有值
最佳答案
给你:
USE information_schema;
SELECT *
FROM
KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = 'X'
AND REFERENCED_COLUMN_NAME = 'X_id';
如果您有多个具有相似表/列名称的数据库,您可能还希望将查询限制为特定数据库:
SELECT *
FROM
KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = 'X'
AND REFERENCED_COLUMN_NAME = 'X_id'
AND TABLE_SCHEMA = 'your_database_name';
关于mysql - 如何找到所有具有引用特定 table.column 的外键并具有这些外键值的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/806989/