我想删除我的数据库中许多其他表引用的表。通过下面的查询,我找到了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个单独的语句?
答案 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)。