MS SQL如何清空自动增长的ID号?
时间:2010-10-04 来源:skyaspnet
一个朋友问我,"在清空表数据的同时也清空自动增长的ID?".呵呵大家在删除东西的时候是不是经常用Delete或Drop,而很少用truncate呀,我想大多数是这样的,就连我自己也是这样的嘿嘿
。truncate Table 表名不紧可以删除表的内容同时也删除了自动增长的列ID,使之从头开始在增长。这里有几个注意点。
(1)删除表中的所有行,而不记录单个行删除操作。
(2)TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似
(3)TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。
(4)所用的事务日志空间较少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一个项。TRUNCATE TABLE 通过释放用于存储表数据的数据页来删除数据,并且在事务日志中只记录页释放。
使用的锁通常较少。
(5)当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。TRUNCATE TABLE 始终锁定表和页,而不是锁定各行。
表中将毫无例外地不留下任何页。
执行 DELETE 语句后,表仍会包含空页。例如,必须至少使用一个排他 (LCK_M_X) 表锁,才能释放堆中的空表。如果执行删除操作时没有使用表锁,表(堆)中将包含许多空页。对于索引,删除操作会留下一些空页,尽管这些页会通过后台清除进程迅速释放。
(6)TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。若要删除表定义及其数据,请使用 DROP TABLE 语句。
(7)如果表包含标识列,该列的计数器重置为该列定义的种子值。如果未定义种子,则使用默认值 1。若要保留标识计数器,请使用 DELETE。
http://www.cnblogs.com/655400/archive/2009/01/16/1376993.html










