一尘不染

MySQL:如何以编程方式确定外键关系?

mysql

类似于此问题,但适用于MySQL。

我如何以编程方式确定MySQL中的外键引用(假设InnoDB)?我几乎可以通过以下方式获得它们:

SHOW TABLE STATUS WHERE Name = 'MyTableName';

…但是可惜,似乎包含某些信息的评论列被截断了,所以我不能依靠它。一定有其他方法…

我对C API调用,SQL语句或其他任何东西都感到满意-我只需要一贯工作的东西。

注意:我也考虑过解析“ SHOW CREATE TABLE MyTableName”语句的结果,但是我真的希望有一些更简单的方法。


阅读 213

收藏
2020-05-17

共1个答案

一尘不染

您可以查询两个表来获取此信息:INFORMATION_SCHEMA.TABLE_CONSTRAINTSINFORMATION_SCHEMA.KEY_COLUMN_USAGE

这是上面链接的后一页上来自注释的查询,它演示了如何获取所需的信息。

SELECT CONCAT( table_name, '.', column_name, ' -> ', 
  referenced_table_name, '.', referenced_column_name ) AS list_of_fks 
FROM INFORMATION_SCHEMA.key_column_usage 
WHERE referenced_table_schema = 'test' 
  AND referenced_table_name IS NOT NULL 
ORDER BY table_name, column_name;

使用您的架构名称,而不是test上面的“ ”。

2020-05-17