[DB] MSSQL 자동증가열(IDENTITY)사용법
테이블을 설계하다보면 고유ID값으로 로그성 정보나 이력관련 부분등 자동증가열을 사용하는 경우가 있습니다. IDENTITY값관련 사용법 및 주의사항에 대하여 살펴보겠습니다. 아래 4가지 순서로 확인해보겠습니다.
1. 자동증가열 생성방법
2. ID값이 중간에 빠지는 경우
3. ID값 재사용방법.
SET IDENTITY_INSERT .. ON
4. ID값 가져오기.
ID값을 확인 시스템함수. @@IDENTITY,IDENT_CURRENT(),SCOPE_IDENTITY()
1. 자동증가열 생성방법
아래 스크립트문을 살펴보면 id필드값이 IDENTITY(1,1) 으로 설정된것을 알수있습니다. 초기값이 1로해서 1씩 증가하겠다는 의미입니다. IDENTITY(10,5)이런식으로 지정하면 초기값을 10으로 해서 5씩증가하도록 설정된 것있습니다.
1
2
3
4
5
6
7
|
CREATE TABLE [dbo].[MyUser](
[id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[name] [varchar](50) NULL
) ON [PRIMARY]
GO
insert into MyUser (name) values( '홍길동1')
insert into MyUser (name) values( '홍길동2') insert into MyUser (name) values( '홍길동3') select * from MyUser
|
2. ID값이 중간에 빠지는 경우
id값이 순차적으로 생기다가 해당데이터를 DELETE문으로 삭제하거나 할경우에는 해당번호가 삭제가 됩니다. 삭제가되면 해당ID값을 채워지지 않고 최종발생한 INSERT이후 값으로 1씩증가하여 채워집니다. 그리고 한개더 있는데 트랜잭션을 걸어서 쿼리를 사용한경우 해당쿼리가 ROLLBACK될경우에도 해당번호가 채워지지 않고 건너뛰어지게되어있으니 참고하시기 바랍니다.

3. ID값 재사용방법. SET IDENTITY_INSERT .. ON
비어있는 ID값을 넣기위해는 자동증가열에 ID값을 넣을수있도록 설정해주어야합니다. ID값을 지정해서 데이터를 넣으면 아래 이미지와 같이 에러가 발생합니다. 기본적으로 ID값을 넣지 않게되어있어서 SET IDENTITY_INSERT .. ON 명령을 통해서 ID값을 넣을수 있도록 활성화 해주어야합니다.
1
|
SET IDENTITY_INSERT [ [ database_name . ] schema_name . ] table_name { ON | OFF }
|