【问题标题】:HOW do i use SELECT @@identity in sql server?我如何在 sql server 中使用 SELECT @@identity?
【发布时间】:2011-04-01 09:23:53
【问题描述】:

我目前正在 mysql 中从 VBA 调用 SELECT @@identity:

Set rs = cn.Execute("SELECT @@identity", , adCmdText)

但由于我将使用 sql server db 而不是 mysql,所以我想知道如何使这个语句对 sql-server 友好

只是Set rs = cn.Execute("SCOPE_IDENTITY()", , adCmdText) ??

【问题讨论】:

    标签: sql mysql sql-server vba


    【解决方案1】:

    两个 SQL 语句都有效,但有一个例外。改变

    "SCOPE_IDENTITY()"
    

    "SELECT SCOPE_IDENTITY()"
    

    两者的区别在于@@identity 变量包含SQL Server 上最新的标识值(全局视角)。 SCOPE_IDENTITY() 函数返回最近的本地身份。

    您可以在SCOPE_IDENTITY here 上找到更多信息。

    【讨论】:

    • 本地标识表示批次或过程范围内的标识值。
    • 不完全是。 @@identity 不是全局的,它与运行它的实际查询相关联,它不会为在调用@@identity 之前在一毫秒后完成的其他查询提供标识。但它会多次给你错误的答案,不应该使用它,因为它会给出由你的查询引起的事件链中的最后一个身份,或者包含在触发器中生成的身份,这不是你想要的身份。 @@Identity 永远不能用于查找刚刚插入 SQL Server 的标识值
    • 感谢@HLGEM - 比我提供的描述更好。
    【解决方案2】:

    如果您询问它的 T-SQL 方面,那么您应该能够只使用相同的语句(即“SELECT @@identity”)。

    【讨论】:

      猜你喜欢
      • 2010-11-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 2019-11-19
      • 1970-01-01
      • 2021-09-28
      • 2018-02-18
      相关资源
      最近更新 更多