0

我正在为 MySQL 中的特定模式生成数据字典。到目前为止,我有 table_name、columm_name、column_type(如下 SELECT 语句中的)。如何在同一个数据字典中包含外键约束?我想输入外键信息。变成这种格式:

CONCAT(table_name, '.', column_name, ' -> ', referenced_table_name, '.', referenced_column_name)

select  
t.table_name,
c.column_name,
c.column_type

from
information_schema.tables as t
    inner join
information_schema.columns as c ON t.table_name = c.table_name
    and t.table_schema = c.table_schema
where
t.table_type in ('base table' , 'view')
    and t.table_schema like 'mySchema'
order by t.table_schema , t.table_name , c.ordinal_position;
4

1 回答 1

1

表约束列表可以在table_constraints表中找到。从此表中,您可以通过以下方式获取所有行来获取所有外键:

constraint_type='FOREIGN KEY'

这将为您提供外键列表,如果您需要更多详细信息(例如它们指向的表和列),请查看 key_column_usage 表:

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    |       |
+-------------------------------+--------------+------+-----+---------+-------+
12 rows in set (0.00 sec)
于 2015-07-03T14:11:25.087 回答