MySql使用引用键查找树结构

时间:2014-06-03 11:51:45

标签: mysql

我们有一个存储用户详细信息的父表。从现在开始我们做软删除。但是由于一些法律承诺,我们不得不对用户详细信息进行严格删除。

所以问题是主表被引用很多地方。 我们能够在MySQL中使用以下查询找到所有引用的表

USE information_schema;
SELECT TABLE_NAME, Column_Name,Constraint_Name
FROM
  KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_NAME = 'ProjectUser'
  AND REFERENCED_COLUMN_NAME = 'userid'
  AND TABLE_SCHEMA = 'testproduct';

这是一个成功,因为我们得到了45左右的所有表格。但真正的问题是,有可能是" ProjectUser"也可以在其他地方引用。

例如, 其中一个子表UserAddress用作其他表的foriegn Key。如何查询引入所有引用ProjectUser的表及其子表和子表?

1 个答案:

答案 0 :(得分:1)

没有任何问题可以帮助你摆脱困境。您可以编写一个程序来连续运行查询来构建此结构,但是您无法在一个查询中完成所有操作。

1)使用mysqldump,写一些东西来解析转储并构建树

2)使用工具可视化模式,例如(schemaspy)[http://schemaspy.sourceforge.net/]或(mysql workbench)[http://www.mysql.com/products/workbench/]

3)认真对待@AlmaDo的建议并添加ON DELETE CASCADE。您可以删除现有外键并使用后面的表函数读取它。如果由于违反约束而重新添加外键时出现问题,请在重新添加外键时禁用密钥。