출처 : Johnny Papa│MJM Investigations 의 "SQL 성능을 높이는 5가지 방법" 중
------------------------------------------------------------------------------
간혹, 방금전에 INSERT한 RECORD의 ID (자동증가 일련번호) 값이 얼마인지를 확인해야 할 때가 있다.

INSERT INTO TEST_TAB (VALUE) VALUES('AAA')
SELECT @@IDENTITY

만약 코드상에서 위의 방법을 수행해야 할 경우, INSERT문 실행 후 즉시 레코드셋을 가져오기 위해서는 다음과 같이 해주어야 한다. (별건 아니고 'xx행 적용됨' 메시지를 안나오게 하는 구분이다.)


SET NOCOUNT ON
INSERT INTO TEST_TAB (VALUE) VALUES('AAA')
SELECT @@IDENTITY

단, 한가지 중요한 조건이 있는데... INSERT문과 "동일한 세션"에서 INSERT "직후"에 실행되어야 한다는 점이다.

다른 세션에서 사용할 수 있는 방법도 있는데...

SELECT    IDENT_CURRENT('test_tab')           -- 출처 : MSDN

이건 지정된 테이블의 현재 ID 값을 얻어온다. 직전에 INSERT한 것이 어느 세션이든 상관없다.


제품 중 저걸 몰라서 SELECT MAX(SEQ)+1 ... 과 같은 방법으로 채번을 따는 부분이 있었다. ㅡ.ㅜ
Posted by kuaaan

댓글을 달아 주세요

  1. 감사 2011.08.12 16:38  댓글주소  수정/삭제  댓글쓰기

    도움이 됐습니다. 감사합니다.



사랑합니다. 편안히 잠드소서