删除分配了外键的表

时间:2014-06-26 19:47:23

标签: mysql sql database

我正在尝试TRUNCATE一个名为user_info的表,但是我不能在我的另一个表user_profile中创建一个名为{{1}的外键这阻止我截断user_info表。我试图删除外键但没有成功。

我试过了:

f_key

ALTER TABLE user_profile DROP f_key

但两者都没有效果。有什么想法吗?

根据以下评论建议输出:

ALTER TABLE user_profile DROP FOREIGN KEY f_key

2 个答案:

答案 0 :(得分:1)

您不能将TRUNCATE用于外键引用表。想象一下TRUNCATE是DROP TABLECREATE TABLE的组合。您的表定义已经有ON DELETE CASCADE,这意味着删除的主密钥将导致删除子行。但是,TRUNCATE将跳过这些限制。

改为使用DELETE FROM user_info

答案 1 :(得分:0)

你也可以这样做:

mysql> SET FOREIGN_KEY_CHECKS=0;
mysql> TRUNCATE TABLE user_info;
mysql> SET FOREIGN_KEY_CHECKS=1;

但是,如果user_profile中存在依赖于user_info中的行的任何行,那么这些行现在将成为“孤立”。