[문제가 발생 하는 경우]
MSSQL 에서 Table 의 자동 증가행 필드를 읽어 올 경우 가끔 잘 못 된 값이 리턴 되는것을 경험
자동증가행 읽어 오는 구분
테이블 구조
TB_TEST (auto_no int identity(1,1) , column1 int)
declare @auto_No int
Insert InTo TB_TEST(column1) Values(12)
Set @auto_No = @@IDENTITY
@@IDENTITY는 현재 세션의 마지막 IDENTITY 값을 반환하므로, 트리거 등에 의해 다른 테이블에 INSERT가 발생하면 그 값이 반환될 수 있습니다.
[ 해결 방법 ]
1번째 해결방법
DECLARE @OutputTable TABLE (auto_No INT)
Declare @auto_No int
Insert InTo TB_TEST(column1)
OUTPUT INSERTED.Slip_No INTO @OutputTable
Values(12)
SELECT @auto_No = Slip_No FROM @OutputTable
OUTPUT 절을 사용하면 INSERT된 행의 실제 값을 직접 가져올 수 있습니다.
2번째 해결방법
declare @auto_No int
Insert InTo TB_TEST(column1) Values(12)
Set @auto_No = SCOPE_IDENTITY()
SCOPE_IDENTITY()는 현재 스코프(현재 저장 프로시저나 함수)에서 생성된 마지막 IDENTITY 값을 반환합니다.
MSSQL 분할 백업 (0) | 2024.03.04 |
---|---|
왜 MSSQL을 사용하는가? (0) | 2024.01.30 |
MSSQL이란 무엇인가? (0) | 2024.01.29 |
MSSQL에 대한 소개 (0) | 2023.11.21 |
MSSQL 강의 목차 (0) | 2023.11.17 |
Blog is powered by kakao / Designed by 미스터짱