站内搜索  

哈尔滨百姓网首页 | 操作系统 | 软件应用 | 平面设计 | 程序开发 | 硬件维护 | 网络安全
 您的位置: 哈尔滨百姓网 > 电脑网络 > 程序开发 > 阅读文章:全面解决--如何获得刚插入数据库的记录的ID号
全面解决--如何获得刚插入数据库的记录的ID号
2009-4-17 9:53:29 哈尔滨百姓网 来源:百度空间 浏览 次 【 】【打印】【关闭

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   
%>  
[责任编辑:佚名]
 相关文章
·CSS布局方法的十八般技巧和兼容方案 (2009-11-13 17:14:48)
·利用Google给自己的网站加上投票功能 (2009-10-13 12:32:39)
·您试图在此 Web 服务器上访问 (2009-8-13 14:20:12)
·Asp伪静态的实现及URL重写-用ISAPI_Rewri (2009-8-6 15:07:08)
·巧用ASP脚本命令重启服务器 (2009-8-6 15:05:39)
·Dreamweaver CS3网页制作之CSS布局 (2009-7-1 16:07:45)
·网页设计经验和技巧总结 (2009-7-1 16:03:12)
·网页优化必须做的26件事情 (2009-7-1 16:00:36)
·把数据库结构显示出来的源代码 (2009-4-17 9:55:16)
·插入记录后马上得到自动编号值(Access库) (2009-4-17 9:54:33)
·ASP计算两个时间之差的函数 (2009-4-17 9:52:11)
·一个通用数据库显示程序,能调任意库,任意 (2009-4-17 9:50:33)
·技巧:ASP开发中存储过程应用全接触 (2009-4-17 9:48:31)
·网站简体繁体转换代码 (2009-4-17 9:44:15)
·ASP导出Excel数据的四种方法 (2009-4-17 9:42:14)
·利用网页监听,实现内容中的图片由滚轮控 (2009-4-17 9:37:21)
·html操作本地数据库 (2009-4-17 9:33:18)
·Access中使用Create Procedure创建 (2009-4-17 9:31:08)
·asp实现同网站不同目录绑定不同域名 (2009-4-17 9:27:57)
 热门文章 哈尔滨电脑
·安全防护策略-打造堡垒主机
·SQL Server到底需要使用哪些端口?
·把重要的Word 2003文档放到菜单中
·您试图在此 Web 服务器上访问的 
·Photoshop制作火焰的神龙
·Win2003架设多用户隔离Ftp服务器
·XP系统服务恢复批处理
·还有2天发布 Windows7必备77条小知识
·情侣玩儿法:用虚拟硬盘打造坚不可摧的影子系统
·用U盘当钥匙 轻松绕过WinXP的登陆密码
·Photoshop打造漂亮的心形挂链壁纸
 推荐文章 哈尔滨电脑
·精简节约!小公司办公打印省钱全攻略
·CSS布局方法的十八般技巧和兼容方案
·三种方法 教你解决输入法不显示的问题
·当红情侣QQ表情:茉莉和龙井
·Win 7出现休眠Bug 微软提供解决方案
·将Powerpoint文档转换为Word文档
·非常实用来学习连续供墨系统入门知识
·怕吃亏?怕假的?鉴别真假耗材的小窍门
·情侣玩儿法:用虚拟硬盘打造坚不可摧的影子系统
·开始—运行(cmd)命令大全
·您试图在此 Web 服务器上访问的 
 最新文章 哈尔滨电脑
·Web服务器如何避免CC攻击
·SQL Server到底需要使用哪些端口?
·XP系统服务恢复批处理
·局域网遭ARP攻击网络掉线批处理
·CISCO 2811 路由器配置命令全集
·避免“悲剧” 打印机使用技巧全面攻略
·保障远程桌面Web连接安全四项注意
·教你六招处理服务器数据意外丢失
·挑选相纸有学问 教你如何辨别相纸优劣
·精简节约!小公司办公打印省钱全攻略
·CSS布局方法的十八般技巧和兼容方案