ASP中获取正在插入的记录的ID值SQL语句和方法
|
admin
2010年12月13日 14:11
本文热度 3869
|
在ASP网站开发中,我们经常遇到,需要把新插入的记录的ID取出来,作为一个很重要的标识字段存到另一个表里。
很傻的办法是,instert以后,把插入值作为条件取查询,但有时会出错,因为不唯一,也有人会想到,查询最大的那个ID“max(id)”,或者最顶上的那个ID,“select top1 id”,这些在单用户下是可以的,但在多用户操作时,很可能获取到时别人的ID。
什么方法最有效呢?如何才能有效获取正在插入的记录的ID值SQL语句和方法?下面用一个例子来说明方法。现在这里有张gisblogs_net这样的表(创建代码如下,sql server)
create table gisblogs_net
(
id int identify(1,1) primary key not null,
name varchar(50) null
)
下面时ASP获取ID的代码
dim sql,conn
dbuid="sa"
dbpwd="sa123456"
dbname="gisblogs.net"
dbip="localhost"
conn="driver={SQL Server};server="&dbip&";uid="&dbuid&";pwd="&dbpwd& amp;";database="&dbname&""(连接字符串,ACCESS自己找一个)
sql="select * from gisblogs_net"
rs.open sql,conn,1,3
rs.addnew
rs("name")="测试"
rs.update
response.Write(rs("id"))
rs.close
set rs=nothing
set conn=nothing
该文章在 2010/12/13 14:11:13 编辑过
| |
全部评论5 |
|
admin
2010年12月13日 14:11
找到一句可以获得当前最新ID的语句,如下:
复制内容到剪贴板代码:
conn.execute("insert into member (user,code) values ('"&request.form("user")&"','"&request.form("code")&"')")
set rs=conn.execute("Select SCOPE_IDENTITY()")
newsid=rs(0)
rs.close试过,确实能获得最新ID,但是看了SCOPE_IDENTITY()相关介绍后还是有点不明白,语句中为什么写“newsid=rs(0)”,其中的rs(0)是什么意思?我更换成“newsid=rs(1)”、“newsid=rs”都是什么都没有。如果我想要获取的不是ID而是别的列又要怎样呢? 该评论在 2010/12/13 14:11:38 编辑过
|
|
admin
2010年12月13日 14:11
SCOPE_IDENTITY()
SCOPE_IDENTITY()获取的是最后一个字段的id
select scope_identity()
rs(0) 是索引
一般的sql "select id,name from table"
rs(0)=rs("id")
rs(1)=rs("name") 该评论在 2010/12/13 14:11:49 编辑过
|
|
admin
2010年12月13日 14:12
rs(0)是第一个字段的值,Select SCOPE_IDENTITY()
所以没有rs(1)... 该评论在 2010/12/13 14:12:04 编辑过
|
|
admin
2010年12月13日 14:12
如果我想获取多几个最新值该怎么办?
像是在select scope_identity()之后,希望能获取最新的id 以及最新的name 该评论在 2010/12/13 14:12:28 编辑过
|
|
admin
2010年12月13日 14:12
那就查询了 该评论在 2010/12/13 14:12:42 编辑过
|