询问一个DBCC CHECKIDENT与事务的问题
背景:
有两张表 Test 10 与 Test 11。表的结构如下:
Test 10 有两个字段分别是: cniId (int,自增) ,cnvcUseName (varchar)
Test 11 有两个字段分别是: cniId (int,自增) ,cnvcUseName (varchar)
需求:
Test 11表的cnvcUserName字段的值,为 Test 10表当前 cniId字段 的值+1;
设计:
存储过程INSERT_TEST11:
BEGIN DECLARE @nextId int; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; BEGIN TRANSACTION; SELECT @nextId=IDENT_CURRENT( 'Test10' ) +1; DBCC CHECKIDENT( 'Test10',RESEED, @nextId); SELECT @nextId; INSERT INTO Test11 (cnvcUseName) VALUES (@nextId); COMMIT TRANSACTION; END
BEGIN SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; BEGIN TRANSACTION; INSERT INTO Test10 (cnvcUseName) VALUES (GETDATE()); COMMIT TRANSACTION; END