我要将数据插入到表中,如下所示:
Insert Into MyTable (Field1, Field2)
Values ('test', 5)
当发生插入时,新行将在ID
列中具有标识值。如果在我的T-SQL代码中有一个名为@ID
的变量,如何使用T-SQL插入的结果填充@ID
?
Declare @ID int
Insert into MyTable (Field1, Field2)
Values ('test', 5)
--//How do I populate @ID with the value of ID of the record that was just inserted?
答案 0 :(得分:18)
有两种方法 - 第一种方法是使用SCOPE_IDENTITY:
DECLARE @ID INT
INSERT INTO MyTable (Field1, Field2)
VALUES ('test', 5)
SELECT @ID = SCOPE_IDENTITY()
不要使用@@ IDENTITY - 它包含的值是针对上次更新的IDENTITY列而不考虑范围。这意味着它保存你的 INSERT的价值是不可靠的,但SCOPE_IDENTITY确实如此。
另一种方法是使用OUTPUT clause(SQL Server 2005 +)。
答案 1 :(得分:2)
SELECT @ID = SCOPE_IDENTITY();
答案 2 :(得分:0)
你应该在你的情况下使用scope_identity。
有不同的方法来获取最后一个插入的身份,并且它们的工作方式不同,只是为了列出它们的信息 -
OUTPUT CLAUSE(从@OMG小马回答了解它)
在决定使用哪一个之前,请考虑它们之间的differences和comparisons。