2009-09-24 5 views
1

첫째, 나는 OP는 정말 현재의 씨앗과 ID 열이있어값을 삽입하지 않고 ID 열을 어떻게 증가시킬 수 있습니까?


ID 열을 증가 was'nt 할 노력했다 때문에 응답되지 않은 this question 알고 있어요 X의 값은, 나는 그것을 다시 시드하고자하는 X + 1 (즉, 내 ID 열이 내가 사용하는 것을 할 수있어 X X + 2.

에서 직접 이동하려면 다음 command

create procedure IncrementSeedValue 
(
@TableName varchar(255), 
@IncrementValue int 
) 
as 

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; 
BEGIN TRANSACTION; 
    declare @v bigint 
    select @v = IDENT_CURRENT(@TableName)[email protected] 
    DBCC CHECKIDENT (@TableName, RESEED, @v) 
COMMIT TRANSACTION; 
go 

하울 r : 몇 가지 질문이 있습니다.

  • 격리 수준을 "직렬화 가능"으로 설정 했습니까?
  • SQL Server 미러링을 사용할 경우 문제가 발생할 수 있습니다.
  • 주의해야 할 다른 함정이 있습니까?
+0

거래를 통해 ...? – Dirk

답변

1

모든 INSERT에 대해 IDENTITY 값이 사용됩니다.

값을 INSERT하고 즉시 삭제하거나 값을 INSERT하고 ROLLBACK을 실행합니다.

두 경우 모두 IDENTITY 값이 소비됩니다.

DBCC 명령을 "일반"코드로 사용해야하며 관리 작업 전용으로 예약해야한다고 생각하지 않습니다.

또는 SET IDENTITY_INSERT ON을 사용하고 건너 뛴 값이있는 다음 값이 얼마인지 계산할 수있는 경우.

관련 문제