给定一个 MySQL 数据库,如何获取按外键依赖性排序的表名列表,以便可以删除每个表?我知道外键存储在 KEY_COLUMN_USAGE 表中,但我不确定是否有实用方法可以按正确的顺序获取表名称。我更喜欢 100% SQL 解决方案。
最佳答案
如果您的外键遵循命名约定(它们应该:),那么您可以做一些简单的事情,例如
select table_name, group_concat(distinct constraint_name order by constraint_name) as fk_list
from information_schema.key_column_usage
where constraint_name rlike 'fk'
group by table_name
order by fk_list, table_name;
或者,如果您的外键不遵循命名约定,那么
select table_name, group_concat(distinct constraint_name order by constraint_name) as fk_list
from information_schema.key_column_usage
where referenced_table_name is not null
group by table_name
order by fk_list, table_name;
关于mysql - MySQL 中按外键依赖性排序的表名列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21491761/