我正在尝试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
答案 0 :(得分:1)
您不能将TRUNCATE
用于外键引用表。想象一下TRUNCATE是DROP TABLE
和CREATE 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
中的行的任何行,那么这些行现在将成为“孤立”。