5

假设一个像这样的表

CREATE TABLE `testdb`.`test` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

还有其他表可能有引用 test.id 列的外键。有趣的是我不知道什么表有这样的外键,也不知道表有多少行。

现在我想计算分散在具有 test.id 外键的表中的行数。是否可以?

我认为理论上是可以的,否则MySql不能做类似的操作ON DELETE CASCADEDELETE SET NULL...

4

2 回答 2

6

显示所有引用的表和行数

SELECT rc.table_name, t.TABLE_ROWS
FROM `REFERENTIAL_CONSTRAINTS` rc
INNER JOIN `TABLES` t ON t.TABLE_NAME = rc.TABLE_NAME
WHERE rc.REFERENCED_TABLE_NAME = "test"

显示所有引用表行数的总和

SELECT SUM(t.TABLE_ROWS) AS allReferencedTablesRowCount
FROM `REFERENTIAL_CONSTRAINTS` rc
INNER JOIN `TABLES` t ON t.TABLE_NAME = rc.TABLE_NAME
WHERE rc.REFERENCED_TABLE_NAME = "test"
于 2012-04-20T20:57:29.037 回答
0

如果您定义了外键约束,您可以从数据库模式中读取它们,以查看哪些表中的哪些列链接到您的主键。

编辑:检查这个(在左侧选择“数据库元数据”->“查找子表”)

于 2012-04-20T20:51:22.047 回答