3
目前在一些操作中,我必须删除旧数据并插入新数据。但是我注意到,尽管删除了数据,身份列没有重置并且从最后的最大值继续。所以我使用DBCC CheckIdent来实现同样的事情,这些都发生在一个trasaction中。我可以将事务回滚到初始状态吗? DBCC CHECKIDENT会造成任何问题吗?请指导...使用DBCC CHECKIDENT重新启动标识列数后,我们可以回滚到原始状态吗?
目前在一些操作中,我必须删除旧数据并插入新数据。但是我注意到,尽管删除了数据,身份列没有重置并且从最后的最大值继续。所以我使用DBCC CheckIdent来实现同样的事情,这些都发生在一个trasaction中。我可以将事务回滚到初始状态吗? 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)
恕我直言,这个代码并不能证明身份值rollbacked。它只显示从#t删除行的回滚。 – VladV 2010-10-05 07:49:10
@VladV - 编辑来解决你的观察 – 2010-10-05 08:19:55