需要拥有DROP
权限
TRUNCATE
与DELETE
区别DROP
和重新CREATE
表,效率比DELETE
高,对大表进行操作情况下,效率优势更明显TRUNCATE
会进行隐式提交,所以不能够回滚TRUNCATE
操作InnoDB
或NDB
为存储引擎的表中,如果有其他表以当前表的字段作为外键,不能进行TRUNCATE
操作。如果是当前表字段以当前表另一个字段作为外键时,能进行TRUNCATE
操作。TRUNCATE
操作不会返回具体删除了多少条记录TRUNCATE
操作将表清空AUTO_INCREMENT
会被重置为起始值。即使是一般不会重用自增值的MyISAM
或InnoDB
的表也会重置。ON DELETE
触发器TRUNCATE TABLE
视为DROP TABLE
,然后是CREATE TABLE
,即***DDL***而不是***DML***。 这是由于以下事实:在使用InnoDB
和其他事务隔离级别不允许基于语句的日志记录(READ COMMITTED
或READ UNCOMMITTED
)的事务存储引擎时,在使用***STATEMENT***或***MIXED***日志记录模式时未记录并复制该语句。但是,它仍以上述方式应用于使用InnoDB
的复制从属服务器上。TRUNCATE
可以与Performance Schema摘要表一起使用,但是效果是将摘要列重置为0或NULL,而不是删除行。参考连接:
https://dev.mysql.com/doc/refman/5.7/en/truncate-table.html