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