一个表ta ,我用delete from ta是可以成功完成删除操作,但是用truncate table ta时,确提示下面的错误,请是为什么?谢谢!
Cannot truncate table 'ta' because it is being referenced by a FOREIGN KEY constraint.
------解决方案--------------------
ta 作为主表,被其他表(子表)作为外键引用,并且该外键定义为关联删除。
DELETE 可以自动删除子表记录;TRUNCATE 要显式调用,先清除子表数据再清主表。
------解决方案--------------------
DELETE 可以自动删除子表记录?
------解决方案--------------------
网上搜到的:
注意:虽然truncate table在删除数据的速度上会占有一定的优势,但并不是在所有的情况我们都可以使用truncate,存在以下情况就使用truncate就会失败。
1,要删除数据的表包含foreign key约束,而delete则可以通过级联删除来删除相关联的数据。
2,被索引视图引用过的表,也不能使用truncate.
------解决方案--------------------
有外键的表只能用delete,不能用truncate,这是语法规定,要么就取消外键再truncate
------解决方案--------------------
另外,用truncate将不会写入日志,所以若要删除大表的话,尽量用truncate而不要delete