MySQL - 从许多表中删除外键

时间:2014-11-20 10:20:56

标签: mysql foreign-keys

我想删除我的数据库中许多其他表引用的表。通过下面的查询,我找到了320个引用我要删除的父表的表。

SELECT
  ke.referenced_table_name parent,
  ke.table_name child,
  ke.constraint_name
FROM
  information_schema.KEY_COLUMN_USAGE ke
WHERE
  ke.referenced_table_name = 'MasterData';

我想删除这些表上的FOREIGN KEY约束。一个接一个,它会是这样的:

ALTER TABLE a
DROP FOREIGN KEY a_md_fk;

有没有办法合并这两个查询,这样我就可以一次性删除所有FOREIGN KEY,而不是320个单独的语句?

1 个答案:

答案 0 :(得分:1)

使用此查询:

SELECT CONCAT('ALTER TABLE ', ke.table_name, ' DROP FOREIGN KEY ', ke.constraint_name, ';')
FROM
  information_schema.KEY_COLUMN_USAGE ke
WHERE
  ke.referenced_table_name = 'MasterData';

生成您需要删除所需外键的SQL查询。 使用您首选的方式运行它们(将它们保存在文件中,然后将它们传送到mysql命令行客户端,或者如果您使用图形化MySQL客户端,只需使用copy& paste)。