比方说,一个表像
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
...
显示与行数所有引用的表
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"
如果你有外键约束定义的,你可以从数据库中读取架构,看看哪列在表链接到您的主键。
编辑: 检查这 (在左侧选择“数据库的元数据” - >“查找子表”)