全面解决--如何获得刚插入数据库的记录的ID号?

插入|解决|数据|数据库

如何获得刚插入数据库的记录的ID号?

1.SQL Server
对于SQL Server 2000来说,它提供了两个全新的函数(IDENT_CURRENT,SCOPE_IDENTITY),并且改进了@@IDENTITY的不足.当你插入新记录后,可以调用函数:
PRINT IDENT_CURRENT('table') '这将获得新的IDENTITY值,不管数据库中是不是有记录添加(这就避免了@@IDENTITY的连接限制)
或者:PRINT SCOPE_IDENTITY() '这将获得在当前存储过程,触发器等其他程序创建的最新记录的IDENTITY值.
而全局变量@@IDENTITY有一个问题,当对一张表执行insert时,如果该表有触发器程序在执行插入操作,然后,接着在另一张表中插入记录,这样返回@@IDENTITY值就是第二张表的IDENTITY值。
如果你用的不是SQL Server 2000,你最好一个简单的存储过程来解决这个问题。
CREATE PROCEDURE myProc
@param1 INT
AS
BEGIN
SET NOCOUNT ON
INSERT INTO someTable
(
intField
)
VALUES
(
@param1
)
SET NOCOUNT OFF
SELECT NEWID = @@IDENTITY
END
在ASP中你可以这样做:
<%
fakeValue = 5
set conn = Server.CreateObject("ADODB.Connection")
conn.open "<conn string>"
set rs = conn.execute("exec myProc @param1=" & fakeValue)
response.write "New ID was " & rs(0)
rs.close: set rs = nothing
conn.close: set conn = nothing
%>

2.Access
对于Access,你可以用下面这样的方法:
<%
fakeValue = 5
set conn = Server.CreateObject("ADODB.Connection")
conn.open "<conn string>"
conn.execute "Insert into someTable(intField) values(" & fakeValue & ")"
set rs = conn.execute("select MAX(ID) from someTable")
response.write "New ID was " & rs(0)
rs.close: set rs = nothing
conn.close: set conn = nothing
%>
然而对于多人同时向数据库中添加数据,我们就要利用记录集的adOpenKeyset游标来防止出错。例如下面的例子:
<%
fakeValue = 5
set conn = Server.CreateObject("ADODB.Connection")
conn.open "<conn string>"
set rs = Server.CreateObject("ADODB.Recordset")
rs.open "select [intField] from someTable where 1=0", conn, 1, 3
rs.AddNew
rs("intField") = fakeValue
rs.update
response.write "New ID was " & rs("id")
rs.close: set rs = nothing
conn.close: set conn = nothing
%>

时间: 2024-08-04 01:02:04

全面解决--如何获得刚插入数据库的记录的ID号?的相关文章

取得当前插入数据库中记录的id值

在PHP中,经常需要把插入数据库中的id值取出来,而正好有这么一个函数: <?php//执行插入数据库的语句//--$getID=mysql_insert_id();//$getID即为最后一条记录的ID ?> PHP 函数 mysql_insert_id() 是返回在最后一次执行了 INSERT 查询后,由 AUTO_INCREMENT 定义的字段的值.

javaweb-JSP页面上有很多超链接,如何动态的获取其在数据库中对应的Id号,并将这个Id号传到下一个界面

问题描述 JSP页面上有很多超链接,如何动态的获取其在数据库中对应的Id号,并将这个Id号传到下一个界面 <c:forEach var="article" items="${articlelist}"> <tr> <td bgcolor="#FFFFFF"> <font> <!-- 文章标题 --> <a href="/xiaoneinew/article.do?flag

Spring+Hibernate得到刚插入的值

问题描述 Spring+Hibernate如何得到刚插入数据库的ID值ID是用UUID方式生成的!? 解决方案 save之后就可以直接取了.比如:User user = new User();save(user);然后就有ID了:user.getId();

请教大师帮助解决gridview的多条记录插入数据库

问题描述 请教大师帮助解决gridview的多条记录插入数据库 我的代码对吗? for (int i = 0; i < gridView1.RowCount - 1; i++) { zxpj.CLMC = Convert.ToString(gridView1.GetRowCellValue(i,gridView1.Columns[0].ToString())); zxpj.INKSL = Convert.ToInt32(gridView1.GetRowCellValue(i,gridView1.

PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID_php技巧

前言 最近在工作中又遇到了这个问题,PHP中如何获得刚插入数据的ID(或当前发布文章的ID)呢?觉得有必要整理下详细的解决方法,方便自己也给有需要的朋友们提供以帮助,那么话不多说了,来看看详细的解决介绍. 解决方法 其实用 mysql_insert_id() 函数就可以实现的. 定义和用法 mysql_insert_id() 函数返回上一步 INSERT 操作产生的 ID. 注意:如果上一查询没有产生 AUTO_INCREMENT 的 ID,则 mysql_insert_id() 返回 0. 语

解决数据库中记录重复问题

解决|数据|数据库|问题|重复 解决数据库中记录重复问题 (By:aloxy) Jul 22, 11:19 --产品数据重复统计SELECT mc, userid, COUNT(mc) AS Expr1FROM chanpinGROUP BY mc, userid--将不重复的纪录插入新表newchanpinselect * into #Tmp1 from chanpingoselect min(ID) as autoID into #Tmp2 from #Tmp1 group by mc, u

数据库表-刚接触数据库,oracle的制表

问题描述 刚接触数据库,oracle的制表 比如姓名 张三 李四,学号 1 2,用数据库代码怎么写啊.还请各位赐教啊. 解决方案 create table student( id int primary key name varchar2 ); insert into student values(1张三""); insert into student values(2李四""); commit: select * from student; 解决方案二: 给你一个

spring问题,事务提交阶段显示主键ID为0,插入数据库失败

问题描述 spring问题,事务提交阶段显示主键ID为0,插入数据库失败 struts2+hibernate4创建了一个注册系统,本来没问题的,但是整合加入spring之后在注册报空指针异常,在事务提交阶段取到的userId为0.感觉就是在new user()那里出问题,但是一直找不到问题根源困扰好久,*.hbm.xml,实体类都没问题,就是事务提交主键ID老是提示为0,怎么解决 实体类文件package com.chengji.ssh.beans; public class User { pr

ssh整合是时,使用日期插件把数据插入数据库是发生错误

问题描述 ssh整合是时,使用日期插件把数据插入数据库是发生错误 警告: SQL Error: 604, SQLState: 60000 2015-7-9 20:31:44 org.hibernate.util.JDBCExceptionReporter logExceptions 严重: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-00942: 表或视图不存在 2015-7-9 20:31:44 org.hibernate.tool.hbm2ddl.SchemaUpdate