【问题标题】:synchronization issue with SCOPE_IDENTITY()SCOPE_IDENTITY() 的同步问题
【发布时间】:2013-10-04 10:01:20
【问题描述】:

对不起,如果这个问题很愚蠢,但我似乎找不到答案。刚开始使用 SQL。我正在阅读Get the last inserted row ID (with SQL statement) 的答案,似乎 SCOPE_IDENTITY 是“最新插入的值”。此操作是否在插入后立即锁定,因为如果没有,那么另一个新插入的行可能会成为在我打算获取其 ID 的插入之后立即插入的内容。

感谢您的帮助!

【问题讨论】:

  • 它为您的 范围 提供 最后插入的 ID - 例如如果另一个用户/连接正在插入某些内容,您将不会获得该 ID - 您将获得您插入的最后一个 ID
  • 我明白了,谢谢!抱歉,我显然什至不知道要搜索什么!现在使用 SCOPE 很有意义!
  • 确保您拥有适用于您的 SQL Server 版本的最新补丁。有些使用 SCOPE_IDENTITY() 有相当恼人的错误。

标签: sql sql-server


【解决方案1】:

要通过 SQL 查询获取最新插入的行信息,您有三个选项:

@@IDENTITY:它返回为当前会话中的任何表生成的最后一个标识值,跨越所有范围

SCOPE_IDENTITY:它返回为当前会话和当前范围内的任何表生成的最后一个标识值。

IDENT_CURRENT:它返回在任何会话和任何范围内为特定表生成的最后一个标识值

【讨论】:

  • 感谢您的解释!
【解决方案2】:

您还应该研究使用 Scope_Identity 的另一个替代方法 - 阅读有关使用 OUTPUT 子句的信息:http://msdn.microsoft.com/en-us/library/ms177564(v=sql.100).aspx/html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2019-09-25
    • 2010-11-20
    • 1970-01-01
    • 2012-07-08
    相关资源
    最近更新 更多