내가 저장 프로 시저에서이 코드 조각이 :SQL Server는 SCOPE_IDENTITY 이해()
BEGIN
SET @UserId = NULL;
IF (@Username IS NOT NULL)
BEGIN
EXECUTE SP_ADD_USER @Username, @UserId OUTPUT;
END
EXECUTE SP_ADD_ALERT @Name, @AlertType, @AlertId OUTPUT;
INSERT INTO AlertLogs (Datastamp, AlertID, UserID, NotificationMessage)
VALUES (@Datastamp, @AlertId, @UserId, @EmailMessage);
SET @AlertLogId = SCOPE_IDENTITY();
END
@AlertLogId
내가 AlertLogs
테이블의 마지막 삽입의 결과에 할당하려는 출력 매개 변수입니다. 내가 제대로 작동하려면 SCOPE_IDENTITY()
위해서는 새로운 블록 (새로운 시작/종료 범위)에서
INSERT INTO AlertLogs (Datastamp, AlertID, UserID, NotificationMessage)
VALUES (@Datastamp, @AlertId, @UserId, @EmailMessage);
을 포함해야합니까? 은 (예를 들어, 예를 들어 SP_ADD_ALERT
에서 수행 삽입 된 레코드의 마지막 ID를보고하지?) 귀하의 요청에
이것은 내가 예상 한 것입니다. EXECUTE SP_ADD_ALERT는 다른 범위에서 실행되므로 ID 값이 삽입되어 있어도 어떤 경우에도 고려되지 않습니다. – Ghita
예 msdn 사이트에서 두 문이 동일한 저장 프로 시저, 함수 등 내에 있어야한다고 나와 있습니다. 함수에서'INSERT' 나'EXEC'처럼 사용할 수없는 것처럼'SCOPE_IDENTITY'를 사용하는 이유를 알지 못합니다. – Curt
트리거가 무엇인가를 삽입하게하는 함수를 함수가 수행 할 수 있습니까? 그렇다면 삽입이 SCOPE_IDENTITY() 함수에서? –