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