发布于 2016-02-09 16:47:15
MySQL 5.0
13.1.21截断表语法 ..。 对于5.0.3版本之前的InnoDB表,InnoDB通过逐个删除行来处理截断表。从MySQL 5.0.3开始,只有当存在引用表的任何外键约束时,才会使用逐行删除。如果没有外键约束,InnoDB执行快速截断,方法是删除原始表并创建一个具有相同定义的空表,这比逐个删除行要快得多。(当使用快速截断时,它会将任何AUTO_INCREMENT计数器重置为零。从MySQL 5.0.13开始,不管是否存在外键约束,截断表都会将AUTO_INCREMENT计数器重置为零。) 在外键约束引用表的情况下,InnoDB逐个删除行并处理每个约束。如果外键约束指定DELETE级联,则删除子表(引用)表中的行,截断的表变为空。如果外键约束没有指定级联,则截断表语句将逐个删除行,并在遇到子行引用的父行时停止,返回以下错误: 错误1451 (23000):无法删除或更新父行:外键约束失败(
test.child、约束child\_ibfk\_1外键(parent\_id)引用parent(id)) ..。
MySQL 5.1
13.1.34截断表语法 ..。 如果有引用该表的外键约束,则InnoDB将逐个删除行来处理截断表,并在其进行过程中处理这些约束。如果外键约束指定DELETE级联,则删除子表(引用)表中的行,截断的表变为空。如果外键约束没有指定级联,则截断表语句将逐个删除行,并在遇到子行引用的父行时停止,返回以下错误: 错误1451 (23000):无法删除或更新父行:外键约束失败(
test.child、约束child\_ibfk\_1外键(parent\_id)引用parent(id)) Note 在MySQL 5.5及更高版本中,外键引用的InnoDB表不允许截断表。为便于升级,请重写此类语句,改为使用DELETE。..。
MySQL >= 5.5
13.1.34截断表语法 ..。
..。
https://stackoverflow.com/questions/35295644
复制相似问题