【发布时间】:2019-04-08 18:09:52
【问题描述】:
如何从使用 MyISAM 构建的 MySQL 数据库中获取指向(和从)特定表和/或特定列的所有外键约束的列表?这与 this InnoDB question 相同,但 MyISAM 特定于 MySQL。
考虑规范航空公司数据集。当我根据链接问题的接受答案 (TO) 和节点的答案 (FROM) 运行以下两个查询时,我的结果是空集。
显示所有指向“mytable”的外键:
SELECT
TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_SCHEMA, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_SCHEMA = 'airlines' AND -- <database>
REFERENCED_TABLE_NAME = 'airports'; -- <table> flights, carriers, planes
显示所有指向 FROM 'mytable' 的外键:
SELECT * FROM information_schema.TABLE_CONSTRAINTS
WHERE information_schema.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'FOREIGN KEY'
AND information_schema.TABLE_CONSTRAINTS.TABLE_SCHEMA = 'airlines'
AND information_schema.TABLE_CONSTRAINTS.TABLE_NAME = 'carriers';
我是否误认了 REFERENCED_TABLE_SCHEMA?此查询是否仅在 InnoDB 中有效?
【问题讨论】:
-
MyISAM 不支持外键; MySql 允许在 CREATE TABLE 中使用它们,但如果引擎是 MyISAM 则忽略它们。
标签: mysql foreign-keys myisam