truncate table命令与不带where的delete命令都是删除数据表中的所有记录,对数据表结构无影响。
不同之处在于 :
①truncate table的删除不会写入日志,因此速度会很快,但是也因为如此,对数据的删除时不可恢复的,所以执行时最好先备份
②truncate table是DDL(数据库定义语言:create,drop等)
delete属于DML(数据操纵语言:select,insert,update等),因此truncate table不会触发delete触发器
③以sqlserver为例,若表中存在自增长列(identity),则delete之后水位线不会重置,再次插入数据会出现标识列不连续的状态
可以使用:
DBCC CHECKIDENT (Table_Name,RESEED,10) 将标识位重置为任意数值
而 truncate会将水位线(即标志位)复位。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。