출처 : Johnny Papa│MJM Investigations 의 "SQL 성능을 높이는 5가지 방법" 중
------------------------------------------------------------------------------
간혹, 방금전에 INSERT한 RECORD의 ID (자동증가 일련번호) 값이 얼마인지를 확인해야 할 때가 있다.
만약 코드상에서 위의 방법을 수행해야 할 경우, INSERT문 실행 후 즉시 레코드셋을 가져오기 위해서는 다음과 같이 해주어야 한다. (별건 아니고 'xx행 적용됨' 메시지를 안나오게 하는 구분이다.)
단, 한가지 중요한 조건이 있는데... INSERT문과 "동일한 세션"에서 INSERT "직후"에 실행되어야 한다는 점이다.
다른 세션에서 사용할 수 있는 방법도 있는데...
이건 지정된 테이블의 현재 ID 값을 얻어온다. 직전에 INSERT한 것이 어느 세션이든 상관없다.
제품 중 저걸 몰라서 SELECT MAX(SEQ)+1 ... 과 같은 방법으로 채번을 따는 부분이 있었다. ㅡ.ㅜ
------------------------------------------------------------------------------
간혹, 방금전에 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 ... 과 같은 방법으로 채번을 따는 부분이 있었다. ㅡ.ㅜ
'SQL Server' 카테고리의 다른 글
MAX, COUNT등 GROUP함수 사용시 주의할 점 (1) | 2008.08.17 |
---|---|
데드락이 발생할 때의 원인분석 (0) | 2008.08.17 |
SQL Server의 SQL문에서 이벤트로그 기록하기 (0) | 2008.03.17 |
UPDATE 비용에 대한 고찰 (1) (1) | 2008.03.17 |
INSTEAD OF 트리거 (0) | 2008.03.17 |