conn.execute用SQL语句插入一条记录,怎么取得刚才插入记录的id号?
conn.execute用SQL语句插入一条记录,怎么取得刚才插入记录的id号?
不用查询来找最后一条(或第一条)记录
PHP里就有这样的函数,ASP里怎么实现??
问题点数:0、回复次数:18Top
1 楼lsrzm(Michale Lee)回复于 2003-08-01 18:06:51 得分 0
如何插入Access库记录后马上得到自动编号值
首先须保证获得记录集的方式支持bookmark属性,如1,3
插入一条带自动编号字段的记录后,获取该记录的bookmark属性值
temp = rs.bookmark
然后
rs.bookmark = temp
试试!!
Response.write rs.Fields("ID").Top
2 楼Primer2002cn(教官)回复于 2003-08-01 18:07:42 得分 0
如果ID是自动增长的话可以通过select ##identity或得Top
3 楼zorou_fatal(The world and system is even)回复于 2003-08-01 18:08:51 得分 0
<%
dim conn
set conn=server.CreateObject("adodb.connection")
conn.open "DR"
set rst=server.CreateObject("adodb.recordset")
rst.Open "select * from dr",conn,2,3
rst.addnew
rst("department")="NEW one"
rst("human")="Newton"
rst.Update
rst.MoveLast
Response.Write rst("id")
conn.Close
set conn=nothing
%>
这样也可以。Top
4 楼net_lover(【孟子E章】)回复于 2003-08-01 18:08:57 得分 0
http://www.flws.com.au/showusyourcode/codeLib/code/AddNew.asp?catID=3Top
5 楼huhan3(穿马甲的蛇)回复于 2003-08-01 18:11:18 得分 0
没发现
如果是自增长的id,可以插入后在查id 最大的
——我一般都是这样做的:(Top
6 楼starwalker(飞)回复于 2003-08-01 18:12:11 得分 0
SQL Server
ID主键,自增Top
7 楼starwalker(飞)回复于 2003-08-02 07:50:45 得分 0
能不能不用addnew方法啊?Top
8 楼anita2li(hehe...)回复于 2003-08-02 07:55:00 得分 0
ID.nextValTop
9 楼zorou_fatal(The world and system is even)回复于 2003-08-02 08:13:56 得分 0
注意,如果你是在插入记录后来进行select max id有可能出现并发的情况。
也就是有可能同时有其他用户也在增加记录,这样,你很有可能找到的不是你想要的id。Top
10 楼nik_Amis(...)回复于 2003-08-02 09:12:31 得分 0
upTop
11 楼qdlanghua(青岛浪花)回复于 2003-08-02 09:45:25 得分 0
假设插入语句为
insert into table(field1,field2) values("111","222")
查询语句应为:
select id from table where field1="111" and field2="222"Top
12 楼zorou_fatal(The world and system is even)回复于 2003-08-02 09:54:10 得分 0
net_lover(孟子E章) 大哥给出的链接
的意思也是要防止并发。Top
13 楼starwalker(飞)回复于 2003-08-15 10:47:00 得分 0
是是!
我就是为了防止并发啊!
qdlanghua(青岛浪花) :万一有多个同样的记录呢?Top
14 楼qdlanghua(青岛浪花)回复于 2003-08-15 11:33:17 得分 0
查询语句应为:
select top 1 id from table where field1="111" and field2="222" order by id desc
也就是,如果有多个重复记录,随意取一个,没有多大区别的,本例中取最后一个
Top
15 楼qdlanghua(青岛浪花)回复于 2003-08-15 11:44:45 得分 0
因为如果记录是重复的,取哪一个并没有多大的意义,随便取一个即可
以下我取最大的一个
查询语句应为:
select top 1 id from table where field1="111" and field2="222" order by id desc
Top
16 楼starwalker(飞)回复于 2003-08-15 20:02:47 得分 0
啊??Top
17 楼kevinyang886(阳光)回复于 2003-08-15 21:26:13 得分 0
id应该是自赠的呀!取最大不就可以了嘛!Top
18 楼starwalker(飞)回复于 2003-08-16 09:53:55 得分 0
取最大
就会有并发的问题啊!Top
19 楼cloudchen(cloudchen)回复于 2003-08-16 10:02:57 得分 0
不要用conn.execute
--------------------------------------------
Dim userID
Set rs = Server.CreateObject("ADODB.Reocrdset")
rs.open sql,conn,1,3
rs.addnew
....
rs.update
userID = rs("userID")
rs.close
Response.Write userID
Top



