如何获取插入产生的Identity字段?

时间:2010-11-11 17:15:50

标签: sql sql-server tsql stored-procedures

我要将数据插入到表中,如下所示:

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?

3 个答案:

答案 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。

有不同的方法来获取最后一个插入的身份,并且它们的工作方式不同,只是为了列出它们的信息 -

  1. @@IDENTITY

  2. SCOPE_IDENTITY()

  3. IDENT_CURRENT

  4. OUTPUT CLAUSE(从@OMG小马回答了解它)

  5. 在决定使用哪一个之前,请考虑它们之间的differencescomparisons

相关问题