日期:2014-05-17 浏览次数:20674 次
use Tempdb
go
create table T1(ID int identity)
insert T1 default values;
delete T1
go
dbcc checkident('T1',reseed,0)
go
insert T1 default values;
go
select * from t1
------解决方案--------------------
--1. 下面的代码演示了回滚事务导致标识值不连续的情况:
--a.手工回滚事务
CREATE TABLE #(id int IDENTITY(0,1),b int)
INSERT # SELECT 1
--手工事务回滚
BEGIN TRAN
INSERT # SELECT 2
ROLLBACK TRAN
INSERT # SELECT 2
SELECT * FROM #
DROP TABLE #
/*--结果
id b
----------------- -----------
0 1
2 2
--*/
GO
--b. 因操作失败自动回滚事务
CREATE TABLE #(id int IDENTITY(0,1),b int UNIQUE)
INSERT # SELECT 1
--违反惟一键约束,插入失败而导致自动回滚事务
INSERT # SELECT 1
INSERT # SELECT 2
SELECT * FROM #
DROP TABLE #
/*--结果
id b
----------------- -----------
0 1
2 2
--*/
GO
/*===================================================*/
------解决方案--------------------