mysql - 如何找到所有具有引用特定 table.column 的外键并具有这些外键值的表?

标签 mysql foreign-keys

我有一个表,它的主键在其他几个表中作为外键引用。例如:

  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 查询:

  1. 在 X 中具有外键的表的列表
  2. 以及哪些表实际上在外键中有值

最佳答案

给你:

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/

相关文章:

php - mysql 的输出总和 - 不正确的值

html - 如何制作漂亮的日期格式?

django - 如何序列化多个模型对象?

MySQL-错误号 150 : "Foreign key constraint is incorrectly formed"

php - Laravel 引用外键数据

php - 设置外键只显示用户信息

java hibernate 实体: allow to set related object both by id and object itself

php - Google Chart 在 SQL 字符串之间添加每一天

php - 更新只有一列数据发生变化的表

java - 从Java中的2个表中删除行