让我们说一个像
这样的表格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 CASCADE
,DELETE SET NULL
等操作...
答案 0 :(得分: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"
答案 1 :(得分:0)
如果定义了外键约束,则可以从数据库模式中读取它们,以查看哪些表链接到主键。
编辑:check this(在左侧选择“数据库元数据” - >“查找子表”)