본문 바로가기
Database/MSSQL

[MSSQL] IDENTITY 사용법 및 초기화

by Kor-IT 2022. 6. 2.
반응형

IDENTITY 는 마지막으로 삽입된 ID 값을 반환해준다. Insert, Select INTO 또는 대량 복사 문이 완료된 후 @@IDENTITY에는 마지막 생성된 ID 값이 들어 있다. 만약 영향이 없다면 NULL 을 반환한다. IDENTITY 를 공부하며 추가적으로 상황에 맞는 ID 값을 가져오는 방법들을 정리했다.

 


 

@@IDENTITY

먼저 '@@' 의 의미부터 알아보자. '@@' 의 의미는 세션을 뜻한다. '@@IDENTITY' 를 풀이하면 '해당 세션에서 마지막으로 삽인된 ID 값을 반환한다.' 는 뜻이다.

SELECT @@IDENTITY

 


IDENT_CURRENT('테이블명')

특정 테이블에 대해서 한정 지을때 사용한다. 특졍 세션과 범위에 있는 테이블에 대한 마지막 ID 값을 반환한다.

SELECT IDENT_CURRENT('테이블명')

 


SCOPE_IDENTITY()

현재 세션, 범위에 있는 테이블에 대해 생성된 마지막ID 값을 반환한다. 개인적으로 해당 함수로 자주 사용한다.

왜냐하면 IDENTITY 는 해당 테이블에 대해서 여러번 변경이 되었을 경우 내가 원하는 값이 아닌 최종 변경된 값을 반환이 된다. SCOPE_IDENTITY 는 내가 제한한 프로세스 + 세션에 대한 IDENTITY 값을 반환해주기 때문에 가장 신뢰할 수 있다.

SELECT SCOPE_IDENTITY()

 


초기화하기

특정 테이블의 Identity 한 Column 을 초기화 한다.

DBCC CHECKIDENT('table name', reseed, 초기값)

-- ex) DBCC CHECKIDENT('TABLE', reseed, 0)

 

실행 후 현재 ID 값과 일차하지는 확인을 한다.

DBCC CHECKIDENT('table name', noreseed)

-- ex) DBCC CHECKIDENT('TABLE', noreseed)

주의! 데이터를 임시 삭제하고 IDENTITY 값을 초기화하면 ID 값과 컬럼값은 일치하지 않는다.

 

 

반응형

댓글