使用 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)