从自动增量的id字段中检索最新值?

时间:2012-02-02 09:34:37

标签: sql-server-2000 c#-2.0

I am from this link

假设我有一个表:

FieldWorker{ ID, Name, WorkingArea}

而且,ID是一个自动递增的字段。

现在,假设我使用以下代码插入记录:

sqlComm.ExecuteNonQuery("INSERT INTO [FieldWorker]
       ([Name]
       ,[WorkingArea])
 VALUES
       (@Name
       ,@WorkingArea)");

我可以使用哪种技术来检索插入最新记录时生成的自动递增ID字段的最大值?

插入代码和ID - 值的检索都必须在单个SqlTransaction对象下完成。

为什么我必须使用ExecuteScalar()

3 个答案:

答案 0 :(得分:0)

对于SQL Server 2000,您需要使用SCOPE_IDENTITY和ExecuteScalar

执行此操作
sqlComm.ExecuteScalar("INSERT INTO [FieldWorker]
       ([ID]
       ,[Name]
       ,[WorkingArea])
 VALUES
       (@ID
       ,@Name
       ,@WorkingArea);
       SELECT SCOPE_IDENTITY()");

对于SQL Server 2005+,您使用OUTPUT子句

sqlComm.ExecuteScalar("INSERT INTO [FieldWorker]
       ([ID]
       ,[Name]
       ,[WorkingArea])
 OUTPUT INSERTED.ID
 VALUES
       (@ID
       ,@Name
       ,@WorkingArea);");

答案 1 :(得分:0)

1)您可以将ID设置为Identity(自动增量) 2)您可以按照以下方式获取最后一个身份证号码

@@IDENTITY

参考SQL Identity Number

答案 2 :(得分:0)

如果ID字段是自动增量的,则不需要在插入中包含。

此外,您可以使用Scope_Identity()。

有关详细信息,请访问此博客

http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/