2014. 1. 14. 15:52 IT/MSSQL
@@IDENTITY, SCOPE_IDENTITY(), IDENT_CURRENT() 차이점.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
테이블을 생성할 때, 일련번호를 할당하기 위하여 IDENTITY를 사용하게 됩니다.
IDENTITY를 사용하할 때, 삽입한 행의 일련번호를 얻기 위하여 흔히 @@IDENTITY 함수를 자주 이용하게 되는데, @@IDENTITY 함수를 사용할 때 주의할 점이 있습니다.
@@IDENTITY 함수는 현재 세션에서 삽입된 마지막 IDENTITY 값을 반환합니다. 따라서 트리거에서 다른 테이블의 IDENTITY가 새로 추가되거나 하게 되면 원치 않는 결과를 가져오게 됩니다.(@@IDENTITY 함수가 트리거에서 삽입된 IDENTITY 값을 반환함)
그래서 현재 범위(하나의 저장프로시저 내, 하나의 쿼리문 내 ...)내에서 마지막으로 추가된 IDENTITY 다음 값을 얻을 때는 SCOPE_IDENTITY() 함수를 사용해야 합니다.
IDENT_CURRENT() 함수는 해당 테이블의 호출 시점의 마지막 IDENTITY 값을 반환합니다. 따라서 그 값이 다음에도 마지막 값이라고 보장할 수 없습니다. 다른 세션에서 새로운 행을 추가한 경우에는 그 값이 달라지기 때문입니다.
'IT > MSSQL' 카테고리의 다른 글
MSSQL 날짜 테이블 가져오기. 날짜 DataSet 가져오기. (0) | 2014.02.11 |
---|---|
중첩 트랜잭션(Nested Transaction) (0) | 2014.02.06 |
MSSQL Identity 초기화 DBCC (0) | 2013.10.01 |
MSSQL 페이징 쿼리 ( Paging Query ) (0) | 2013.08.16 |
MSSQL Row Number 일련번호 구하기 (0) | 2013.08.02 |