如何获取插入的行自动增量ID?

时间:2013-01-17 02:36:43

标签: sql sql-server-2000

C# + SQL Server ExecuteScalar() not returning last inserted id中,我找到了一个很好的解决方案来获取插入的行自动增量ID。所以现在我的查询看起来就像:

INSERT INTO dbo.YourTable(Col1, Col2, ..., ColN)   
OUTPUT Inserted.ID
VALUES(Val1, Val2, ..., ValN);

但不幸的是我在SQL Server 2000上并且这种语法不可用。

我可以用什么来达到相同的效果?

2 个答案:

答案 0 :(得分:2)

您可以在Sql Server 2000中使用@@ IDENTITY

但是,您需要了解这些限制(SCOPE_IDENTITY已经克服了这些限制)。有关解释http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/

,请参阅此文章

修改

MSDN http://msdn.microsoft.com/en-us/library/aa259185%28v=sql.80%29.aspx说SS2000中SCOPE_IDENTITY 可用,所以我建议您改用它。

您可以通过执行SET @<var> = SCOPE_IDENTITY()

来获取值

此链接http://www.mikesdotnetting.com/Article/54/Getting-the-identity-of-the-most-recently-added-record还有一些如何使用SCOPE_IDENTITY

的示例

答案 1 :(得分:0)

我工作的答案是通过存储过程插入行,因为ms {sql server 2000中没有OUTPUT关键字。此外,由于同样的原因,我不得不放弃inserted并使用{ {1}}。

嗯,看起来有点像这样:

scope_identity