ta 作为主表,被其他表(子表)作为外键引用,并且该外键定义为关联删除。
DELETE 可以自动删除子表记录;TRUNCATE 要显式调用,先清除子表数据再清主表。

解决方案 »

  1.   

    DELETE 可以自动删除子表记录?
      

  2.   

    网上搜到的:
    注意:虽然truncate table在删除数据的速度上会占有一定的优势,但并不是在所有的情况我们都可以使用truncate,存在以下情况就使用truncate就会失败。
    1,要删除数据的表包含foreign key约束,而delete则可以通过级联删除来删除相关联的数据。
    2,被索引视图引用过的表,也不能使用truncate.
      

  3.   


    没建立级联删除,delete也可以删除子表记录吗
      

  4.   

    有外键的表只能用delete,不能用truncate,这是语法规定,要么就取消外键再truncate
      

  5.   

     FOREIGN KEY constraint 了。有别的表引用了
      

  6.   


    没建立级联删除,delete也可以删除子表记录吗
    DELETE 主表记录时,有级联会自动删子表记录,无级联并且存在子表记录就会报错。
    所以无级联下的操作规则就是先删子表记录、再删主表记录。
      

  7.   

    另外,用truncate将不会写入日志,所以若要删除大表的话,尽量用truncate而不要delete