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 に答える