在我们使用DBCC CHECKIDENT重新启动Identity列计数后,我们可以回滚到原始状态吗?

时间:2010-10-05 07:30:47

标签: sql sql-server sql-server-2005 transactions

目前在某些操作中,我必须删除旧数据并插入新数据。但我注意到,尽管删除了数据,但标识列没有重置并继续从其上一个最大值开始。所以我使用DBCC CheckIdent来实现同样的一切,这是在一个trasaction中发生的。我可以将交易回滚到初始状态吗? DBCC CHECKIDENT会出现任何问题吗?请指导...

1 个答案:

答案 0 :(得分:6)

下面的测试代码显示可以回滚DBCC操作:

create table #t
(id int identity, val1 int)
go

insert #t (val1)
values (1),(2),(3)

select MAX(id) AS before from #t

begin tran 

    delete #t

    dbcc checkident (#t, reseed,0)

    select MAX(id) AS inside_tran from #t   

rollback

select MAX(id) as after_rollback from #t
dbcc checkident (#t, noreseed)