-- 온라인 설명서
구문
(
table_name
[ , { NORESEED | { RESEED [ , new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]
-
현재 ID 값의 구체적인 수정 사항은 매개 변수 지정에 따라 달라집니다.
DBCC CHECKIDENT 명령
ID 수정 사항
DBCC CHECKIDENT ( table_name, NORESEED )
현재 ID 값을 다시 설정하지 않습니다. DBCC CHECKIDENT는
ID 열의 현재 ID 값과 현재 최대값을 반환합니다.
두 값이 같지 않으면 ID 값을 다시 설정하여 잠재적 오류를 방지하고
값이 간격 없이 순서대로 지정되도록 해야 합니다.DBCC CHECKIDENT ( table_name )
또는
DBCC CHECKIDENT ( table_name, RESEED )
테이블의 현재 ID 값이 ID 열에 저장된 최대 ID 값보다 작을 경우
ID 열의 최대값을 사용하여 다시 설정됩니다.DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value )
현재 ID 값이 new_reseed_value로 설정됩니다.
테이블이 생성된 후 삽입된 행이 없거나
TRUNCATE TABLE 문을 사용하여 모든 행을 제거한 경우에는
DBCC CHECKIDENT를 실행한 후에 처음 삽입되는 행이 new_reseed_value를 ID로 사용하게 됩니다.
그렇지 않으면 다음에 삽입된 행은
new_reseed_value + 현재 증분 값을 사용합니다.테이블이 비어 있지 않은 경우
ID 값을 ID 열의 최대값보다 작은 숫자로 설정하면
다음 조건 중 하나가 발생할 수 있습니다.· ID 열에 PRIMARY KEY 또는 UNIQUE 제약 조건이 있으면
생성된 ID 값이 기존 값과 충돌하므로 나중에 테이블에 삽입 작업을 수행할 때 오류 메시지 2627이 생성됩니다.· PRIMARY KEY 또는 UNIQUE 제약 조건이 없으면
나중에 삽입 작업을 수행할 때 중복 ID 값이 생성됩니다.
예외
다음 표에서는 DBCC CHECKIDENT가 자동으로 현재 ID 값을 다시 설정하지 않는 조건을 보여 주고
해당 값을 다시 설정하는 방법을 제공합니다.
상태 |
다시 설정 방법 |
현재 ID 값이 테이블의 최대값보다 큰 경우 |
· DBCC CHECKIDENT (table_name, NORESEED)를 실행하여 또는 · new_reseed_value를 매우 낮은 값으로 설정하고 |
모든 행이 테이블에서 삭제되는 경우 |
new_reseed_value를 원하는 시작 값으로 설정하고 |
데이터 마이그레이션 작업을 하다가
자동 증가 부분에서 불현듯 이놈을 다뤄보고 싶은 생각이 들었다.
말 그대로 자동증가지만 고것을 제어해보자 이거지..ㅎㅎ
머 초기화, 재설정 등 많지만 지금 나의 관건은
최대값 인식 !!
즉 마이그레이션을 하다보니
데이터를 수도없이 넣고 지우게 된다.
그러다보니 자동증가가 어느순간 무지막지하게 커져있다.
맘같아서 TRUNCATE 하고 새롭게 시작하고프나
꼭 이럴땐 앞에 몇개의 데이터들은 제대로 넣은것이라 지우면 안된데....(항상 공감된단 말야..)
그 사이 공백이 너무 커 새롭게 입력되는 데이터들에게
현재 입력 된 데이터 중 가장 큰 자동증가번호의 바로 다음번호 부터 시작하게 하고싶다 요말이지..
이럴때 쓰라고 있는게 위의 온라인 설명서의 예외 사항 부분이다
-- 사용법
DBCC CHECKIDENT(TEMP_GOLFCOURSE)
-- 말도 안되게 낮은 수로 강제 세팅 해버림 (1이 제일 좋은듯)
DBCC CHECKIDENT(TEMP_GOLFCOURSE ,RESEED, 1)
-- 다시 세팅
DBCC CHECKIDENT(TEMP_GOLFCOURSE ,RESEED)
저러면 쉽게 자동증가 재세팅 할수 있다. 후후
라이브러리 링크 : http://technet.microsoft.com/ko-kr/library/ms176057.aspx
'DATABASE' 카테고리의 다른 글
특정 문자를 기준으로 앞뒤 자르기에 유용한 CHARINDEX () 함수 (0) | 2010.01.26 |
---|---|
절대값 양수 반환에 쓰이는 MSSQL ABS() 함수 (0) | 2010.01.15 |
가로쓰기에 유용한 COALESCE() 함수 (0) | 2009.12.14 |
프로시저 내 특정 문자열 찾기 (0) | 2009.12.10 |
INDEX DROP_EXISTING OPTION (0) | 2009.12.07 |