mssql sqlserver truncate 用法详解


摘要:
通常清理一张表中的数据,可以采用 truncate delete
truncate:删除表中全部数据
delete:可以配合where 清理掉指定数据行


目录:
truncate 语法及功能简介
truncate 使用说明



truncate 语法及功能简介

truncate功能:可以快速清除表数据(无论表多大)
truncate 语法:
truncate 数据库名称.架构名称.表名


例:

 create table A(keyId int)
 go
 insert into A (keyId)values(1),(2),(3),(4),(5),(6)
 go
 truncate table A   ---清除表全部数据
 drop table A 
 


truncate 使用说明

2.1 truncate table 同 delete from [表名] 具有相同的功能,都为删除表中全部数据,truncate 比delete运行速度快,truncate 不产生系统日志(只记录页的释放记录),delete 删除表会生成大量系统日志
2.2 truncate table 清理掉的数据无法恢复,delete清理的数据,可以通过日志进行恢复
2.3 truncate table 后,标识列会重新记录,表结构 索引 约束 等表设置信息不会发现变化,表空间会得到释放
delete 清除表数据后,标识列不会被重置,表空间不会被释放
2.4 如果事务中使用truncate table ,当回滚事务时 ,truncate table 操作不会被回滚
2.5 有外键约束的表,无法使用truncate table
2.6 通过事务发布的表,无法使用truncate table
2.7 truncate table 无法触发 触发器的delete操作