如何得到上一次插入记录后自动产生的ID

插入

 
如何得到上一次插入记录后自动产生的ID

作者:淘特网

出处:淘特网

注:转载请注明出处

如果你使用存储过程的话,将非常简单,代码如下:SET @NewID=@@IDENTITY

说明:
在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含此语句产生的最后的标识值。若此语句没有影响任何有标识列的表,则 @@IDENTITY 返回 NULL。若插入了多个行,则会产生多个标识值,@@IDENTITY 返回最后产生的标识值。如果此语句激发一个或多个执行产生标识值的插入操作的触发器,则语句执行后立即调用 @@IDENTITY 将返回由触发器产生的最后的标识值。若 INSERT 或 SELECT INTO 语句失败或大容量复制失败,或事务被回滚,则 @@IDENTITY 值不会还原为以前的设置。

在返回插入到表的 @@IDENTITY 列的最后一个值方面,@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 函数类似。

@@IDENTITY 和 SCOPE_IDENTITY 将返回在当前会话的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。

IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回任何会话和任何作用域中为特定表生成的标识值。有关更多信息,请参见 IDENT_CURRENT。

示例
下面的示例向带有标识列的表中插入一行,并用 @@IDENTITY 显示在新行中使用的标识值。

INSERT INTO infoclass (infoclass) VALUES ('Accountant')

这时我们插入一条记录,下面我们使用语句得到标识值:
SELECT @@IDENTITY AS 'Identity'
我的表infoclass中有个ID字段,它原的值是14插入新的记录后自动产生了值15,因些,上面命令执行后返回值:15。

下面说说如何在.NET中得到插入记录后的ID值。

因为Sqlserver为我们提供了多重查询的功能,这大大方便了我们的工作。请看:

Dim sql As String = "INSERT INTO jobs (job_desc,min_lvl,max_lvl) VALUES ('A new job', 25, 100);" & _
"SELECT job_id FROM jobs WHERE job_id = @@IDENTITY"
Dim cmd As New SqlCommand(sql, cn)

上面可以看到,SqlCommand可以执行多条语句,各语句之间用“;"分隔。第一条执行插入,第二条则返回最后插入记录的ID值,因为查询返回的是单列的,并且值也是唯一的,所以可以使用ExecuteScalar获得:
Dim jobId As Integer = CInt(cmd.ExecuteScalar())

时间: 2024-08-31 21:16:33

如何得到上一次插入记录后自动产生的ID的相关文章

使用SQL Server 获取插入记录后的ID(自动编号)_MsSql

最近在开发项目的过程中遇到一个问题,就是在插入一条记录的后要立即获取所在数据库中ID,而该ID是自增的,怎么做?在sql server 2005中有几种方式可以实现. 要获取此ID,最简单的方法就是在查询之后select @@indentity--SQL语句创建数据库和表 复制代码 代码如下: create database dbdemo go use dbdemo go create table tbldemo (     id int primary key identity(1,1),  

使用SQL Server 获取插入记录后的ID(自动编号)

最近在开发项目的过程中遇到一个问题,就是在插入一条记录的后要立即获取所在数据库中ID,而该ID是自增的,怎么做?在sql server 2005中有几种方式可以实现. 要获取此ID,最简单的方法就是在查询之后select @@indentity --SQL语句创建数据库和表 复制代码 代码如下: create database dbdemo go use dbdemo go create table tbldemo (     id int primary key identity(1,1),

模拟点击-delphi中,点击【程序上的】打开按钮后自动打开网页并实现点击【网页中的】一个按钮

问题描述 delphi中,点击[程序上的]打开按钮后自动打开网页并实现点击[网页中的]一个按钮 假设以打开 http://mail.163.com/ 为例,程序上点击打开按钮后 打开网页并模拟点击'注册'按钮.如何实现???? [id="lfBtnReg" class="btn btn-side btn-reg" href="http://reg.email.163.com/mailregAll/reg0.jsp?from=163mail_right&qu

Mysql插入记录后返回该记录ID

  最近和Sobin在做一个精品课程的项目,因为用到一个固定的id作为表间关联,所以在前一个表插入数据后要把插入数据生成的自增id传递给下一个表.研究了一番决定使用Mysql提供了一个LAST_INSERT_ID()的函数. liehuo.net LAST_INSERT_ID() (with no argument) returns the first automatically generated value that was set for an AUTO_INCREMENT column

asp下如何在Access数据库中立即得到所插入记录的自动编号?_ASP基础

首先,我们要保证获得记录集的方式支持bookmark属性,如在1.3插入一条有自动编号字段的记录后,获取该记录的bookmark属性值: temp = rs.bookmark 然后再: rs.bookmark = temp Response.write rs.Fields("ID").Value 应该可以了哦.

解决Hibernate JPA中insert插入数据后自动执行select last_insert_id()_oracle

今天做项目遇到了一个问题,是以前没注意的.我用的是Spring MVC+ Hibernate JPA + MySQL数据库.在插入数据后SQL执行日志中会多出一条select语句: 复制代码 代码如下: Hibernate: insert into click_statstic (logDate, memoId, src, typeId) values (?, ?, ?, ?)Hibernate: select last_insert_id() 表中有个主键是自增列.可是在以往的项目中,没发现有

asp如何取得插入记录后最新ID的值?

ACCESS库可以这样书写:set rs = server.createobject("adodb.recordset")sql = "select * from news"rs.addnewrs("title") = "测试"rs("content") = "内容"rs.updatenewid = rs("id")rs.close SQLSERVER用上面的方法不行

Win8如何设置插入鼠标后自动禁用触摸板

在桌面模式下,按键盘的[WIN]+[X]组合键打开高级管理工具,选择[控制面板].     2. 在控制面板中,选择[硬件和声音].   3. 点击右侧的[触控板].   4. 此时会打开"Touchpad"窗口,如下图:   5. 将最底部的"插入外置USB指向装置时禁用"打钩即可,如下图:  

关于ASP.NET满足条件下的插入记录

问题描述 protectedvoidbtnClickOK_Click(objectsender,EventArgse){stringStoreID=this.txtStoreID.Text.Trim();stringStoreDate=this.txtStoreDate.Text;stringStoreType=this.ddlStoreType.Text.Trim();stringStorePlace=this.ddlStorePlace.SelectedValue.ToString();st