为什么?我正在尝试动态查找外键指向的位置。为此,我在 information_schema.KEY_COLUMN_USAGE 中进行搜索。它适用于表格,但不适用于视图。
在 information_schema.VIEWS 中引用了视图,view_definition 字段公开了查询。我认为这是我唯一可以找到有关视图字段来自何处的信息的地方,对吧?
然后,我会在 SELECT 和 FROM 之间搜索我的字段名。如果是别名,获取表字段名和表名(如果是别名则解析表)。
最后一个复杂点,视图可以引用另一个视图,那么代码将不得不是递归的。
举个例子(视图名是vw_mandates_articles):
select ma.*, a.id_articles_unit, a.id_articles_category from mandates_articles ma
left join articles a on ma.id_article = a.id
它在 VIEWS 表中的存储方式是:
select `ma`.`id` AS `id`,
`ma`.`id_mandate` AS `id_mandate`,
`ma`.`id_article` AS `id_article`,
`ma`.`unit_price` AS `unit_price`,
`ma`.`description` AS `description`,
`a`.`id_articles_unit` AS `id_articles_unit`,
`a`.`id_articles_category` AS `id_articles_category`
from (`ste`.`mandates_articles` `ma`
left join `ste`.`articles` `a` on((`ma`.`id_article` = `a`.`id`)))
我的输入是:
- 视图名称 (vw_mandates_articles)
- 字段名称(id_articles_category)
预期输出:
- 字段表 (ste.articles)
- 字段名称(id_articles_category)//可以与输入相同但不一定
我不是要别人为我写它,我只是想在挖掘之前验证该方法。
有什么想法吗?好/坏的方法,替代方案?
提前感谢您的灯