我有這樣一段代碼在存儲過程: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
表的最後插入的結果的輸出參數。我必須包括
INSERT INTO AlertLogs (Datastamp, AlertID, UserID, NotificationMessage)
VALUES (@Datastamp, @AlertId, @UserId, @EmailMessage);
形成新的塊(一個新的開始/結束範圍)
爲了SCOPE_IDENTITY()
正常工作? (而不是例如在報告完成SP_ADD_ALERT
例如插入記錄的最後一個ID?)
這是我所期待的也。 EXECUTE SP_ADD_ALERT執行另一個範圍,這樣就不會在任何情況下可以考慮,即使有也插入標識值 – Ghita
是的,它在MSDN網站上的那兩條語句必須在同一存儲過程中,功能等。雖然我狀態不明白你爲什麼會在一個函數中使用'SCOPE_IDENTITY'因爲你不能'INSERT'或'EXEC' – Curt
一個可以做任何事情,將導致觸發插入的東西,如果是的話,是否會影響插入的值函數中的SCOPE_IDENTITY()? –