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