架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 11515|回复: 0

[资料] SqlServer中实现返回刚插入记录的ID

[复制链接]
发表于 2016-6-15 11:45:40 | 显示全部楼层 |阅读模式

来源:网络 作者:未知

  -创建数据库和表

  create database MyDataBase

  use MyDataBase

  create table mytable

  id int identity(1,1),

  name varchar(20)

  )

  --执行这个SQL,就能查出来刚插入记录对应的自增列的值

  insert into mytable values('李四')

  select @@identity

  二、三种方式的比较

  SQL Server 2000中,有三个比较类似的功能:他们分别是:SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY,它们都返回插入到 IDENTITY 列中的值。

  IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。

  @@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。

  SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值

  SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY 只返回插入到当前作用域中的值;@@IDENTITY 不受限于特定的作用域。

  例如,有两个表 T1 和 T2,在 T1 上定义了一个 INSERT 触发器。当将某行插入 T1 时,触发器被激发,并在 T2 中插入一行。此例说明了两个作用域:一个是在 T1 上的插入,另一个是作为触发器的结果在 T2 上的插入。

  假设 T1 和 T2 都有 IDENTITY 列,@@IDENTITY 和 SCOPE_IDENTITY 将在 T1 上的 INSERT 语句的最后返回不同的值。

  @@IDENTITY 返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值,该值是插入 T2 中的值。

  SCOPE_IDENTITY()返回插入 T1 中的 IDENTITY 值,该值是发生在相同作用域中的最后一个 INSERT。如果在作用域中发生插入语句到标识列之前唤醒调用 SCOPE_IDENTITY()函数,则该函数将返回 NULL 值。

  而IDENT_CURRENT('T1')和 IDENT_CURRENT('T2')返回的值分别是这两个表最后自增的值。

  ajqc的实验:(40条本地线程,40+40条远程线程同时并发测试,插入1200W行),得出的结论是:

  1.在典型的级联应用中.不能用@@IDENTITY,在CII850,256M SD的机器上1W多行时就会并发冲突.在P42.8C,512M DDR上,才6000多行时就并发冲突.

  2.SCOPE_IDENTITY()是绝对可靠的,可以用在存储过程中,连触发器也不用建,没并发冲突

  SELECT IDENT_CURRENT('TableName') --返回指定表中生成的最后一个标示值

  SELECT IDENT_INCR('TableName')--返回指定表的标示字段增量值

  SELECT IDENT_SEED('TableName')--返回指定表的标示字段种子值

  返回最后插入记录的自动编号

  SELECT IDENT_CURRENT('TableName')

  返回下一个自动编号:

  SELECT IDENT_CURRENT('TableName')+(SELECT IDENT_INCR('TableName'))

  SELECT @@IDENTITY--返回当前会话所有表中生成的最后一个标示值








上一篇:SQLServer实现split分割字符串万能方法
下一篇:分享一款实用的搜索神器
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2025-8-2 09:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表