加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLserver 获取数据表新插入记录ID方法---SCOPE_IDENTITY与@@IND

发布时间:2020-12-12 15:05:25 所属栏目:MsSql教程 来源:网络整理
导读:?SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY 是相似的函数,因为它们都返回插入到标识列中的值。 ??? IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。有关详细信息,请参阅 IDENT_

?SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY 是相似的函数,因为它们都返回插入到标识列中的值。

??? IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。有关详细信息,请参阅 IDENT_CURRENT (Transact-SQL)。

??? SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。在使用的时候我们常常不知道用哪一个,??下面的示例介绍如何针对为合并复制发布的数据库中的插入内容使用 @@IDENTITY 和 SCOPE_IDENTITY()。示例中的两个表均在 AdventureWorks 示例数据库中,其中 Person.ContactType 未发布,Sales.Customer 已发布。合并复制将把触发器添加到已发布的表中。因此,@@IDENTITY 可以从复制系统表中的插入内容而非用户表中的插入内容返回值。

??? Person.ContactType 表的最大标识值为 20。如果在此表中插入一行,@@IDENTITY 和 SCOPE_IDENTITY() 返回相同的值。

?

?

  1. USE?AdventureWorks; ?
  2. GO ?
  3. INSERT?INTO?Person.ContactType?([Name])?VALUES?('Assistant?to?the?Manager') ?
  4. GO ?
  5. SELECT?SCOPE_IDENTITY()?AS?[SCOPE_IDENTITY] ?
  6. GO ?
  7. SELECT?@@IDENTITY?AS?[@@IDENTITY] ?
  8. GO ?
  9. ?

?

下面是结果集:

?

  1. SCOPE_IDENTITY ?
  2. 21 ?
  3. @@IDENTITY ?
  4. 21?

?

??? Sales.Customer 表的最大标识值为 29483。如果在此表中插入一行,@@IDENTITY 和 SCOPE_IDENTITY() 返回不同值。SCOPE_IDENTITY() 从用户表中的插入内容返回值,而 @@IDENTITY 从复制系统表中的插入内容返回值。请对需要访问插入的标识值的应用程序使用 SCOPE_IDENTITY()。

?

  1. INSERT?INTO?Sales.Customer?([TerritoryID],[CustomerType])?VALUES?(8,'S') ?
  2. GO ?
  3. SELECT?SCOPE_IDENTITY()?AS?[SCOPE_IDENTITY] ?
  4. GO ?
  5. SELECT?@@IDENTITY?AS?[@@IDENTITY] ?
  6. GO?

?

下面是结果集:

?

  1. SCOPE_IDENTITY ?
  2. 24984 ?
  3. @@IDENTITY ?
  4. 89 ?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读