我有一个表,其主键在其他几个表中作为外键被引用。例如:
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中具有外键的表的列表 AND这些表中的哪一个实际上在外键中具有值
干得好:
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';来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。