在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上并且这种语法不可用。
我可以用什么来达到相同的效果?
答案 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