小编典典

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

sql

目前,在某些操作中,我必须删除旧数据并插入新数据。但是我注意到,尽管删除了数据,但identity列并没有重置,而是从其最后一个最大值继续。因此,我使用DBCC
CheckIdent来实现在事务中进行的所有操作。我可以将交易回滚到初始状态吗?DBCC CHECKIDENT会带来任何问题吗?请指导…


阅读 144

收藏
2021-04-07

共1个答案

小编典典

下面的测试代码显示可以回滚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)
2021-04-07