MYSQL TRUNCATE
所需权限
需要拥有DROP
权限
TRUNCATE
与DELETE
区别
- 等同与
DROP
和重新CREATE
表,效率比DELETE
高,对大表进行操作情况下,效率优势更明显 TRUNCATE
会进行隐式提交,所以不能够回滚- 当session持有一个表锁的话,不能进行
TRUNCATE
操作 - 在以
InnoDB
或NDB
为存储引擎的表中,如果有其他表以当前表的字段作为外键,不能进行TRUNCATE
操作。如果是当前表字段以当前表另一个字段作为外键时,能进行TRUNCATE
操作。 TRUNCATE
操作不会返回具体删除了多少条记录- 只要表格式文件***tbl_name.frm***有效,就能通过
TRUNCATE
操作将表清空 AUTO_INCREMENT
会被重置为起始值。即使是一般不会重用自增值的MyISAM
或InnoDB
的表也会重置。- 与分区表一起使用时,TRUNCATE表保留分区;也就是说会删除和重新创建数据和索引文件,而不影响分区定义(***.par***)文件。
- 不会触发
ON DELETE
触发器