类似于此问题,但适用于MySQL。
我如何以编程方式确定MySQL中的外键引用(假设InnoDB)?我几乎可以通过以下方式获得它们:
SHOW TABLE STATUS WHERE Name = 'MyTableName';
…但是可惜,似乎包含某些信息的评论列被截断了,所以我不能依靠它。一定有其他方法…
我对C API调用,SQL语句或其他任何东西都感到满意-我只需要一贯工作的东西。
注意:我也考虑过解析“ SHOW CREATE TABLE MyTableName”语句的结果,但是我真的希望有一些更简单的方法。
您可以查询两个表来获取此信息:INFORMATION_SCHEMA.TABLE_CONSTRAINTS和INFORMATION_SCHEMA.KEY_COLUMN_USAGE。
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
INFORMATION_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上面的“ ”。
test