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

发布于 2025-01-02 07:57:02 字数 574 浏览 0 评论 0 原文

我来自此链接

假设我有一个表:

FieldWorker{ ID, Name, WorkingArea}

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

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

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

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

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

为什么必须使用 ExecuteScalar()?

I am from this link

Suppose I have a Table:

FieldWorker{ ID, Name, WorkingArea}

And, ID is an auto-incremented field.

Now, suppose, I am using the following code to insert records:

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

What technique can I use to retrieve the maximum value of auto-incremented ID field that has been generated upon the insertion of the latest record?

Both the insertion-code and the retrieval of ID-value must be done under a single SqlTransaction object.

Why must I use ExecuteScalar()?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

下雨或天晴 2025-01-09 07:57:02

对于 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);");

For SQL Server 2000, you'd need to do this with SCOPE_IDENTITY and ExecuteScalar

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

For SQL Server 2005+, you use the OUTPUT clause

sqlComm.ExecuteScalar("INSERT INTO [FieldWorker]
       ([ID]
       ,[Name]
       ,[WorkingArea])
 OUTPUT INSERTED.ID
 VALUES
       (@ID
       ,@Name
       ,@WorkingArea);");
爱的故事 2025-01-09 07:57:02

1)可以将ID设置为Identity(自动递增)
2)您可以获取插入的最后一个身份号码,如下

@@IDENTITY

参考SQL 标识号

1) You can set ID as Identity (auto increment)
2) You can get the last Identity number inserted as follow

@@IDENTITY

Reference SQL Identity Number

稀香 2025-01-09 07:57:02

如果 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/

If the ID field is autoincremented you don't need to include in your insert.

Further you can use Scope_Identity().

For more information you can visit this blog

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文