一、要获取此ID,最简单的方法就是:(以下举一简单实用的例子)

--创建数据库和表

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 列,@@IDENTITYSCOPE_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 --返回当前会话所有表中生成的最后一个标示值

/

sql插入数据并返回ID值 string strConn=ConfigurationSettings.AppSettings["strConnection"]; string SqlStr = tempSql + " ; SELECT @@identity AS 'id'" ; SqlConnection myCon = new SqlConnection(strConn); SqlCommand myComm=new SqlCommand(SqlStr,myCon); myComm.Connection.Open(); string Id = Convert.ToString(myComm.ExecuteScalar());

转载于:https://www.cnblogs.com/jishu/archive/2009/09/02/1940091.html

SQL中返回刚插入记录的ID相关推荐

  1. 数据库返回刚插入记录的ID

    数据库返回刚插入记录的ID --创建数据库和表 create database MyDataBase use MyDataBase create table mytable ( id int iden ...

  2. SQL中获取刚插入记录时对应的自增列的值

    --创建数据库和表 create database MyDataBase use MyDataBase create table mytable ( id int identity(1,1), nam ...

  3. SQL Server 获取刚插入数据的ID号

    第一种方法: insert into table1 values(colvalue1,colvalue2) select ident_current('table1') 第二种方法: insert i ...

  4. 使用SQLServer2005插入一条数据时返回当前插入数据的ID

    使用SQLServer2005插入一条数据时返回当前插入数据的ID 在执行完插入后 再执行 select @@identity from users 就OK 就是刚才插入的那行的 ID了 补充: @@ ...

  5. SQL中合并多行记录的方法总汇

    SQL中合并多行记录的方法总汇 --前几天还在抱怨:sql只有sum(数值),不能sum(字符串) --如果不是分组统计,用select @values = @values + ',' + value ...

  6. java hibernate 插入数据_[Java教程]hibernate 返回新插入数据的Id

    [Java教程]hibernate 返回新插入数据的Id 0 2015-08-28 10:00:11 例如 表明 studentInfoString sql="set set nocount ...

  7. Mysql 中获取刚插入的自增长id的值

    1 insert into user (username,password) VALUES ('zyl','123'); 2 //获取刚插入的自增长id的值 3 select last_insert_ ...

  8. mysql 自增长id string_Mysql中获取刚插入的自增长id的三种方法归纳

    我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的. 但在多线程情况下,就不行了. 下面 ...

  9. 如何取得当前插入记录的ID

    我们在设计数据库时一般都会设计一个自增长型的或GUID型的字段作为记录的唯一性标志,这样的字段在执行插入操作时其值一般都由数据库自行分配,不需要我们为其赋值,但是在实际使用过程中我们常常需要在完成插入 ...

  10. 向表中插入一条记录并返回这条记录的id

    insert into tablename values(...) select   @@identity

最新文章

  1. 科学成为时尚的可行办法
  2. 性能测试总结(一)---基础理论篇
  3. 编辑流程图_作为一名采购商,做不好采购?送你5套采购流程图模板
  4. sklearn快速入门教程:(二)线性回归
  5. spring的view
  6. es6之数据结构 set,WeakSet,mapWeakMap
  7. 以后出去找工作,只能说自己是产品策划了
  8. kpi绩效考核流程图_KPI绩效考核法
  9. mysql定位数据库_MySQL数据库Query性能定位
  10. PyCharm汉化包安装下载及PyCharm无法进行设置问题
  11. mac连接Linux工具推荐,mac最值得关注的终端工具,你知道几个?
  12. 创意的个人简历tab网站模板
  13. 5G:认识5G关键技术
  14. 基于51单片机的数字电流电压表
  15. IE无法安装HP-QC插件
  16. R语言dplyr包学习笔记(吐血整理宇宙无敌详细版)
  17. CY2荧光染料,Cy2@NHS酯基本染料,Cy2DIGE NHS ester的物化性质及光谱特性
  18. JavaScript高级程序设计(第4版)学习随笔【第三章】
  19. 解决上网认证系统 IP 更改后 Ubuntu 等 Linux 系统无法上网的问题
  20. liferay监听器

热门文章

  1. 分布式消息系统jafka快速起步(转)
  2. 分析oracle索引空间使用情况,以及索引是否须要重建
  3. offsetTop和scrollTop差异
  4. 多个checkbox 回显
  5. Ubuntu java 环境变量
  6. Javascript的一种代码结构方式——插件式
  7. cookie和session机制之间的区别与联系
  8. Linux标准化:避免重蹈UNIX的覆辙
  9. mysql损坏打不开_mac系统上 MySQL Workbench意外退出,再也打不开
  10. getSelectionStart() doesn't work in android, is always 0