使用 OUTPUT 獲取新 ID

INSERTing 時,你可以使用 OUTPUT INSERTED.ColumnName 從新插入的行中獲取值,例如新生成的 Id - 如果你有 IDENTITY 列或任何型別的預設值或計算值,則非常有用。

以程式設計方式呼叫此方法(例如,來自 ADO.net)時,你會將其視為普通查詢並讀取值,就好像你將使用 SELECT 語句一樣。

-- CREATE TABLE OutputTest ([Id] INT NOT NULL PRIMARY KEY IDENTITY, [Name] NVARCHAR(50))

INSERT INTO OutputTest ([Name])
OUTPUT INSERTED.[Id]
VALUES ('Testing')

如果在同一組查詢或儲存過程中需要最近新增的行的 ID。

-- CREATE a table variable having column with the same datatype of the ID

DECLARE @LastId TABLE ( id int);

INSERT INTO OutputTest ([Name])
OUTPUT INSERTED.[Id] INTO @LastId
VALUES ('Testing')

SELECT id FROM @LastId

-- We can set the value in a variable and use later in procedure

DECLARE @LatestId int = (SELECT id FROM @LastId)