我有一个具有多个表的数据库。许多表都有带有外键约束的字段。我想截断表,然后用新数据重新填充它们,并且由于某些关系已更改,我还想删除外键。基本上,我想再次从头开始建立FK约束。如何从所有表中删除当前的FK约束?

最佳答案

您可以使用 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';

然后运行生成的输出。

您可以执行类似的操作来截断所有表。
select concat('truncate ',table_name,';')
from information_schema.tables
where table_schema = 'your_db' and table_type = 'base table'

这将截断指定数据库中的所有表。所以请谨慎使用。

关于mysql - 从所有表中删除外键关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7047624/

10-11 05:06