2007. 8. 23. 23:42
[DB]
DECLARE @T TABLE(I INT IDENTITY(1,1), J INT)
INSERT INTO @T (J)
SELECT A
FROM
(
SELECT 1 A
첫번째 INSERT 처리이후 테이블 현황
UNION ALL
SELECT 2
UNION ALL
SELECT 3
UNION ALL
SELECT 4
UNION ALL
SELECT 5
UNION ALL
SELECT 6
) N
SELECT * FROM @T
두번째 INSERT 처리이후 테이블 현황
INSERT INTO @T (J)
SELECT A
FROM
(
SELECT 1 A
UNION ALL
SELECT 2
UNION ALL
SELECT 3
) N
SELECT * FROM @D
* SCOPE_IDENTITY()
SELECT SCOPE_IDENTITY()
ID 값 가져온 결과
-- 같은 범위에 있는 마지막 ID 값을 return 해준다.
* @@IDENTITY
SELECT @@IDENTITY
-- 같은 세션에 있는 마지막 ID 값을 return 해준다.
* SCOPE_IDENTITY() 와 @@IDENTITY의 차이점 설명
A 테이블 과 B 테이블이 있다.
A 테이블에 Insert 트리거가 정의되어있고
A 테이블에 삽입시 B테이블에 동일 삽입이 진행된다.
이때 A 테이블에 값을 입력하면
SCOPE_IDENTITY() 는 A 테이블의 마지막 ID 값을 return 해주고
@@IDENTITY 는 B 테이블의 마지막 ID 값을 return 해준다.
* IDENT_CURRENT()
SELECT IDENT_CURRENT('identity 필드가 있는 테이블')
-- identity 필드가 있는테이블의 마지막 identity값을 return 해준다.
관련 링크
* IDENT_CURRENT()
http://msdn2.microsoft.com/ko-kr/library/ms175098.aspx
* SCOPE_IDENTITY()
http://msdn2.microsoft.com/ko-kr/library/ms190315.aspx
━━━━━━━━━━━━━━━
by 한상국(han3925)
MAIL han3925@gmail.com
han3925@hotmail.com
BLOG pointnet.tistory.com
━━━━━━━━━━━━━━━