집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 `@@IDENTITY`, `SCOPE_IDENTITY()`, `IDENT_CURRENT()` 및 `IDENTITY()`의 차이점은 무엇입니까?
SQL Server ID 기능: 세부 비교
@@IDENTITY
, SCOPE_IDENTITY()
, IDENT_CURRENT()
및 IDENTITY()
은 모두 SQL Server의 ID 열에서 값을 검색하는 것과 관련이 있지만 범위와 적용 면에서 크게 다릅니다.
SQL Server ID 함수의 범위 이해
"범위"는 ID 값이 생성되는 컨텍스트를 나타냅니다. 이는 다음과 같습니다.
기능 분석
@@IDENTITY
: 범위(쿼리, 저장 프로시저 또는 트리거)에 관계없이 현재 세션에서 생성된 마지막 ID 값을 반환합니다.
SCOPE_IDENTITY()
: 현재 세션 및 범위 내에서 생성된 마지막 ID 값을 반환합니다. 보다 정확한 결과를 제공하기 때문에 가장 일반적으로 권장되는 기능입니다.
IDENT_CURRENT('table_name')
: 세션이나 범위에 관계없이 특정 테이블에 대해 생성된 마지막 ID 값을 반환합니다. 이는 다양한 세션이나 컨텍스트에서 특정 테이블에 대한 마지막 ID 값이 필요할 때 유용합니다.
IDENTITY()
: 이는 ID 값을 검색하는 데 사용되지 않습니다. SELECT ... INTO
구문을 사용하여 테이블을 생성할 때 ID 컬럼을 정의하는 데 사용되는 키워드입니다.
예시 시나리오
차이점을 강조하기 위해 다양한 시나리오를 살펴보겠습니다.
단일 INSERT
문: 단일 INSERT
문으로 행을 추가하면 SCOPE_IDENTITY()
과 @@IDENTITY
은 동일한 값을 반환합니다.
트리거 기반 삽입: 트리거가 첫 번째 테이블의 INSERT
다음에 두 번째 테이블에 행을 삽입하는 경우 SCOPE_IDENTITY()
는 현재 문에 직접 영향을 받는 테이블의 ID를 반환합니다. (첫 번째 테이블) @@IDENTITY
은 세션에서 마지막으로 영향을 받은 테이블(두 번째 테이블일 수 있음)에서 ID를 반환합니다.
올바른 기능 선택
대부분의 경우 SCOPE_IDENTITY()
는 상황별 결과를 제공하므로 선호됩니다. @@IDENTITY
은 세션 내 출처와 관계없이 최신 ID 값이 필요할 때 유용합니다. IDENT_CURRENT()
은 현재 세션에 관계없이 특정 테이블에 대한 마지막 ID 값이 필요할 때 중요합니다. IDENTITY()
은 해당 값을 검색하는 것이 아니라 ID 열을 정의하기 위한 것임을 기억하세요.
위 내용은 SQL Server에서 `@@IDENTITY`, `SCOPE_IDENTITY()`, `IDENT_CURRENT()` 및 `IDENTITY()`의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!