4

我想知道是否可以在 Mysql (InnoDB) 中使用 FK 进行反向查找。

原因 - 我想从数据库中读取一个类似 XML 的结构(每个“层”使用一个表),但能够动态地做到这一点。我希望能够通过添加新表并设置 FK 约束来更新 xml 结构。

澄清一下,假设我们有一个表“parent”,其中包含 id (parent_id) 和另外两个列 (k1 和 k2)。xml 看起来像(省略 id):

<parent>
 <k1>v1</k1>
 <k2>v2</k2>
</parent>

现在我们添加一个子表,其外键引用 parent_id 和另一列 (ck1)。相同的查询(之后进行一些处理)现在应该给出:

<parent>
 <k1>v1</k1>
 <k2>v2</k2>
 <child>
  <ck1>cv1</ck1>
 </child>
</parent>

这可能吗?要“SELECT * FROM parent_table”并设置某种参数以返回带有 FK 点的子行吗?

非常感谢!/胜利者

4

1 回答 1

1

在阅读了很多之后,一种选择是使用类似的东西:

SELECT
  referenced_table_name parent,
  table_name child,
FROM
  information_schema.KEY_COLUMN_USAGE
WHERE
  referenced_table_name IS NOT NULL

这使所有表都有孩子。过滤以仅将子级返回给请求的父级当然很容易。然而,不利的一面是,需要上述额外的查询(和处理)。

我仍然希望得到一个“更好”的解决方案,但这可能至少是一个开始;)

于 2009-06-30T07:48:10.787 回答