我正在开发一个基于PHP Web的数据输入工具,以MySQL作为数据库。然而,在数据输入正在进行时,数据库无疑会发生变化(有很多工作要做,所以我们已经启动它,以便它与其他开发并行运行)。
我构建了SQL查询,以便php可以自动:
- 确定数据库中的表格
- 列出具有特定前缀的表,以便仅列出数据条目应使用的表
醇>
然而,我无法弄清楚(尽管检查php,sql和mysql手册和教程)是如何自动拉出由外键连接的表,以便数据输入有一个项目列表可供选择表。简而言之,我如何 - 使用php - 确定:
- 给定表的任何外键
- 外键指向的表名
醇>
没有将任何表名硬编码到SQL查询中?
答案 0 :(得分:0)
使用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 = (your schema name here)
AND REFERENCED_TABLE_NAME is not null
ORDER BY TABLE_NAME, COLUMN_NAME;
此查询确实假定约束以及所有引用和引用表都在同一模式中。
对于InnoDB表,使用SHOW TABLE STATUS
的Comment字段对于提取旧版MySQL的外键信息非常有用。
我不知道除上述两种方法之外的任何其他方式。
快乐的编码!