SQL中返回刚插入记录的ID
一、要获取此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 列,@@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 --返回当前会话所有表中生成的最后一个标示值
/
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相关推荐
- 数据库返回刚插入记录的ID
数据库返回刚插入记录的ID --创建数据库和表 create database MyDataBase use MyDataBase create table mytable ( id int iden ...
- SQL中获取刚插入记录时对应的自增列的值
--创建数据库和表 create database MyDataBase use MyDataBase create table mytable ( id int identity(1,1), nam ...
- SQL Server 获取刚插入数据的ID号
第一种方法: insert into table1 values(colvalue1,colvalue2) select ident_current('table1') 第二种方法: insert i ...
- 使用SQLServer2005插入一条数据时返回当前插入数据的ID
使用SQLServer2005插入一条数据时返回当前插入数据的ID 在执行完插入后 再执行 select @@identity from users 就OK 就是刚才插入的那行的 ID了 补充: @@ ...
- SQL中合并多行记录的方法总汇
SQL中合并多行记录的方法总汇 --前几天还在抱怨:sql只有sum(数值),不能sum(字符串) --如果不是分组统计,用select @values = @values + ',' + value ...
- java hibernate 插入数据_[Java教程]hibernate 返回新插入数据的Id
[Java教程]hibernate 返回新插入数据的Id 0 2015-08-28 10:00:11 例如 表明 studentInfoString sql="set set nocount ...
- Mysql 中获取刚插入的自增长id的值
1 insert into user (username,password) VALUES ('zyl','123'); 2 //获取刚插入的自增长id的值 3 select last_insert_ ...
- mysql 自增长id string_Mysql中获取刚插入的自增长id的三种方法归纳
我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的. 但在多线程情况下,就不行了. 下面 ...
- 如何取得当前插入记录的ID
我们在设计数据库时一般都会设计一个自增长型的或GUID型的字段作为记录的唯一性标志,这样的字段在执行插入操作时其值一般都由数据库自行分配,不需要我们为其赋值,但是在实际使用过程中我们常常需要在完成插入 ...
- 向表中插入一条记录并返回这条记录的id
insert into tablename values(...) select @@identity
最新文章
- 科学成为时尚的可行办法
- 性能测试总结(一)---基础理论篇
- 编辑流程图_作为一名采购商,做不好采购?送你5套采购流程图模板
- sklearn快速入门教程:(二)线性回归
- spring的view
- es6之数据结构 set,WeakSet,mapWeakMap
- 以后出去找工作,只能说自己是产品策划了
- kpi绩效考核流程图_KPI绩效考核法
- mysql定位数据库_MySQL数据库Query性能定位
- PyCharm汉化包安装下载及PyCharm无法进行设置问题
- mac连接Linux工具推荐,mac最值得关注的终端工具,你知道几个?
- 创意的个人简历tab网站模板
- 5G:认识5G关键技术
- 基于51单片机的数字电流电压表
- IE无法安装HP-QC插件
- R语言dplyr包学习笔记(吐血整理宇宙无敌详细版)
- CY2荧光染料,Cy2@NHS酯基本染料,Cy2DIGE NHS ester的物化性质及光谱特性
- JavaScript高级程序设计(第4版)学习随笔【第三章】
- 解决上网认证系统 IP 更改后 Ubuntu 等 Linux 系统无法上网的问题
- liferay监听器