如何从使用MyISAM构建的MySQL数据库中获取指向TO(和FROM)特定表和/或特定列的所有外键约束的列表?这与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吗?
https://dev.mysql.com/doc/refman/8.0/en/myisam-storage-engine.html说:
外键支持:没有
这些天不建议使用MyISAM。 MySQL显然正在逐步淘汰它。
另请参阅我对MyISAM versus InnoDB的回答,以便我们避免使用MyISAM。