티스토리 뷰
[결론]
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
'SQL Server' 카테고리의 다른 글
SQL Server Collation 깨지는 문자 비교 (0) | 2017.07.25 |
---|---|
SQL 2008 to 2016 마이그레이션 (0) | 2017.07.11 |
Editions and Supported Features for SQL Server 2016 (0) | 2017.05.22 |
SQL Server 연결 풀링 - 성능 카운터(ADO.NET) (0) | 2017.05.18 |
How It Works: When is the FlushCache message added to SQL Server Error Log (0) | 2017.04.26 |
- Total
- Today
- Yesterday