본 게시물은 개인적인 의견으로 작성되었으니 절대적인 정보가 아닐 수 있습니다. 참고만 하시고 궁금한 사항이 있으시면 연락주세요.

티스토리 뷰

SQL Server - CATEGORY

DBCC CHECKIDENT RESEED 설정하기

AWS-in 2017. 7. 25. 11:27

[결론]

DBCC CHECKIDENT('CHECKIDENT', RESEED, 초기값); -- 초기값은 현재 Identity  값의 최대값으로 설정한다.

DBCC CHECKIDENT('CHECKIDENT', RESEED, 8);



---- LAB -----


use td

go

 

 

CREATE TABLE [dbo].[CHECKIDENT](

    [ID] [int] NOT NULL PRIMARY KEY  identity(1,1) ,

    [FName] [nchar](10) NULL,

    [Lname] [nchar](10) NULL,

)

GO

 

INSERT INTO DBO.CHECKIDENT SELECT 'KIM','SW'

go 10

 

SELECT * FROM dbo.CHECKIDENT;

 

DELETE FROM dbo.CHECKIDENT WHERE ID > 7

 

/*

ID        FName        Lname

1        KIM               SW       

2        KIM               SW       

3        KIM               SW       

4        KIM               SW       

5        KIM               SW       

6        KIM               SW       

7        KIM               SW       

*/

 

INSERT INTO DBO.CHECKIDENT SELECT 'KIM','SW'

SELECT * FROM dbo.CHECKIDENT;

/*

ID        FName        Lname

1        KIM               SW       

2        KIM               SW       

3        KIM               SW       

4        KIM               SW       

5        KIM               SW       

6        KIM               SW       

7        KIM               SW       

11        KIM               SW   -- 10이 최대값이었기에 11부터 입력이 된다.      

*/

 

DBCC CHECKIDENT('CHECKIDENT');

/*

ID 정보 확인: 현재 ID 값은 '11'이며, 현재 열 값은 '11'입니다.

DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.

*/

 

DELETE FROM dbo.CHECKIDENT WHERE ID > 7

 

DBCC CHECKIDENT('CHECKIDENT');

/*

ID 정보 확인: 현재 ID 값은 '11'이며, 현재 열 값은 '7'입니다.

DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.

*/

 

[시나리오]

잘못된 데이터 입력으로 IDENTITY값이 8부터 다시 시작하기를 원한다.

 

DBCC CHECKIDENT('CHECKIDENT', RESEED, 초기값);

DBCC CHECKIDENT('CHECKIDENT', RESEED, 8);

/*

ID 정보 확인: 현재 ID 값은 '11'입니다.

DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.

*/

 

INSERT INTO DBO.CHECKIDENT SELECT 'KIM','SW'

SELECT * FROM dbo.CHECKIDENT;

 

앗 실수다.

초기값이 현재 데이터의 값으로 설정하는것이 맞다.

DELETE FROM dbo.CHECKIDENT WHERE ID > 7

DBCC CHECKIDENT('CHECKIDENT', RESEED, 7);

/*

ID 정보 확인: 현재 ID 값은 '9'입니다.

DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.

*/

INSERT INTO DBO.CHECKIDENT SELECT 'KIM','SW'

SELECT * FROM dbo.CHECKIDENT;

INSERT INTO DBO.CHECKIDENT SELECT 'KIM','SW'

GO 10

댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday