日期:2014-05-17  浏览次数:20894 次

如何得到刚提交的自动id??急,在线等啊
是sql数据库,不会用存储过程,怎么得到刚提交的数据的自动编号id?
Dim   rs,sql
        Set   rs=Server.CreateObject( "Adodb.RecordSet ")
        sql= "select   *   from   table "
        rs.Open   sql,conn,1,3
        rs.addnew
        rs( "Name ")=Name
        rs( "Pass ")=Pass
        rs.update
        response.write   ID   '这样怎么可以马上就得到这个id呢???
        rs.close:set   rs=noting
还有如果多个用户同时提交信息如何避免错误呢?
愁啊,在线急等   o_o!!!
实在不行的话哪位给写个存储过程的例子让我参考下吧   感谢阿

------解决方案--------------------
如果ID是自增,那就SELECT TOP 1 ID FROM Table ORDER BY ID DESC

使用存储过程的例子
'建立存储过程--------------------------
CREATE PROC P_Table_Insert
@name VARCHAR(50),
@pass VARCHAR(50),
AS
INSERT INTO Table (Name, Pass) VALUES (@name, @pass)
RETURN @@IDENTITY
GO

'----------------------------------------

'asp文件---------------------------------
Dim rs, sql, conn_string '(conn_string是数据库连接字符串)
SET Cmd = Server.CreateObject( "ADODB.Command ")
With Cmd
.ActiveConnection = conn_string
.CommandText = "P_Table_Insert "
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter( "@ReturnValue ",adInteger,AdParamReturnValue)
.Parameters.Append .CreateParameter( "@name ",adVarChar,,50,Name)
.Parameters.Append .CreateParameter( "@pass ",adVarChar,,50,Pass)
.Execute()
intResult = .Parameters( "@ReturnValue ")
End With
SET Cmd = Nothing

'当前ID就是intResult
'----------------------------------------

------解决方案--------------------
INSERT也要考虑并发?????????
------解决方案--------------------
如果ID是自增,那就SELECT max(ID) FROM Table
------解决方案--------------------
汗,刚回答一个这问题。。估计还没掉出第一页
rs.update
rs.reQuery
id=rs(id)
------解决方案--------------------
如果防止并发提交除了使用事务基本上没什么戏
------解决方案--------------------
MySQL用SELECT LAST_INSERT_ID();
MSSQL用SELECT @@IDENTITY
------解决方案--------------------
update后直接rs( "id ")就是了
------解决方案--------------------
给你个思路:定义一个字段(比如为uniqueid):该字段内容= 时间+随机数(插入前产生,并存入变量)
插入语句后加上 select id from table where uniqueid = 变量
这样即可得到刚才插入记录的ID
------解决方案--------------------
刚提交的肯定是数据库中的最后一条呀,select 倒排序取出ID就是了.