0

特定のテーブルから参照されているすべて/1つのテーブルを一覧表示するための可能なクエリは何ですか?

実際、検索で見つけた次のクエリを使用して、特定のテーブルによって参照されているテーブルを一覧表示できます。

use INFORMATION_SCHEMA;

select TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME from KEY_COLUMN_USAGE where
REFERENCED_TABLE_NAME = '<table>';

しかし、私が必要としているのは、これの裏側です。これは、特定のテーブルから参照されているテーブルのリストです。

解決策があれば素晴らしいと思います。よろしくお願いします。

4

1 に答える 1

0

次を使用できます。

SELECT TABLE_NAME 
    FROM information_schema.KEY_COLUMN_USAGE 
WHERE REFERENCED_TABLE_NAME = 'yourtable';

どのテーブルが「yourtable」にリンクしているかを確認します。

次を使用できます。

SELECT REFERENCED_TABLE_NAME 
    FROM information_schema.KEY_COLUMN_USAGE 
WHERE TABLE_NAME = 'yourtable';

逆に検索します。このテーブルが正しく入力されるようにするには、createtableステートメントで正しい外部キー宣言を使用してください。

mysql> describe KEY_COLUMN_USAGE;
+-------------------------------+--------------+------+-----+---------+-------+
| Field                         | Type         | Null | Key | Default | Extra |
+-------------------------------+--------------+------+-----+---------+-------+
| CONSTRAINT_CATALOG            | varchar(512) | NO   |     |         |       |
| CONSTRAINT_SCHEMA             | varchar(64)  | NO   |     |         |       |
| CONSTRAINT_NAME               | varchar(64)  | NO   |     |         |       |
| TABLE_CATALOG                 | varchar(512) | NO   |     |         |       |
| TABLE_SCHEMA                  | varchar(64)  | NO   |     |         |       |
| TABLE_NAME                    | varchar(64)  | NO   |     |         |       |
| COLUMN_NAME                   | varchar(64)  | NO   |     |         |       |
| ORDINAL_POSITION              | bigint(10)   | NO   |     | 0       |       |
| POSITION_IN_UNIQUE_CONSTRAINT | bigint(10)   | YES  |     | NULL    |       |
| REFERENCED_TABLE_SCHEMA       | varchar(64)  | YES  |     | NULL    |       |
| REFERENCED_TABLE_NAME         | varchar(64)  | YES  |     | NULL    |       |
| REFERENCED_COLUMN_NAME        | varchar(64)  | YES  |     | NULL    |       |
+-------------------------------+--------------+------+-----+---------+-------+
于 2012-07-31T10:59:12.643 に答える