从所有表中删除外键关系

Bad*_*mer 7 mysql foreign-keys

我有一个有几个表的数据库.许多表都具有外键约束的字段.我想截断表,然后用新数据重新填充它们,我也想取消外键,因为一些关系已经改变.基本上,我想再次从头开始构建FK约束.如何从所有表中删除当前的FK约束?

Nic*_*ssu 10

您可以使用information_schema.看看这个页面

http://dev.mysql.com/doc/refman/5.0/en/key-column-usage-table.html

select concat('alter table ',table_name,' drop foreign key ',constraint_name,';') 
from information_schema.key_column_usage
where constraint_schema = 'your_db' and referenced_table_name = 'table_name';
Run Code Online (Sandbox Code Playgroud)

然后运行生成的输出.

您可以执行类似操作以截断所有表.

select concat('truncate ',table_name,';') 
from information_schema.tables
where table_schema = 'your_db' and table_type = 'base table'
Run Code Online (Sandbox Code Playgroud)

这个将截断指定数据库中的所有表.所以要小心使用它.