我正在尝试从 INSERT 语句中检索最新的标识值。忽略 OUTPUT、@@IDENTITY 或 SCOPE_IDENTITY() 中哪个是更好的方法的问题,我可以使用 OUTPUT 直接插入 INT 变量,还是必须 OUTPUT 到表变量中然后从中选择?
即我可以做类似的事情(我知道这不起作用):
DECLARE @NewId INT
INSERT INTO MyTable (foo)
OUTPUT INSERTED.id INTO @NewID
VALUES ('bar');
还是我总是必须这样做:
DECLARE @NewId TABLE (NewId INT)
DECLARE @NewIdAsInt INT
INSERT INTO MyTable (foo)
OUTPUT INSERTED.id INTO @NewID
VALUES ('bar');
SET @NewIdAsInt = (SELECT TOP(1) NewId FROM @NewId)