如何得到刚提交的自动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就是了.