0

我在从数据库中检索最后一条记录 id 时遇到问题。下面的代码是我能得到的更接近的。但是,它仍然返回记录 id,为 0;,然后当我再次执行时,它会返回,之前执行的记录,而不是当前的。

sql = "insert into program (prog_det,budget,prog_obj,outcome,target_group,awareness,engagement,issue,seq_no) value ('"&prog_title&"','"&prog_budget&"','"&prog_obj&"','"&prog_result&"','"&prog_target&"','"&prog_aware&"','"&prog_involment&"','"&prog_issues&"','99');"

sql2 = "select last_insert_id() as last_id"

set kpi_prog_conn=Server.CreateObject("ADODB.Connection")
set kpi_prog_rs=Server.CreateObject("ADODB.Recordset")

kpi_prog_conn.Open ObjConn
kpi_prog_conn.Execute(sql)

kpi_prog_conn.Open sql2,objConn,adLockPessimistic

response.write kpi_prog_rs("last_id")
4

3 回答 3

0

您要检索的 ID 是对应表的主键吗?尝试使用 Scope_Identity() 而不是 last_insert_id()

查询 - SELECT SCOPE_IDENTITY() AS [LAST_IDENTITY]

它会将您最后插入的 id 返回到表中

于 2013-07-10T04:22:40.700 回答
0

你的倒数第二行看起来不对

尝试

kpi_prog_rs.Open sql2,kpi_prog_conn,adLockPessimistic
于 2013-07-16T17:16:10.353 回答
0

我没有mysql,但尝试:

sql2 = "select last_insert_id() as last_id;"
sql = "insert into program (prog_det,budget,prog_obj,outcome,target_group,awareness,engagement,issue,seq_no) value ('"&prog_title&"','"&prog_budget&"','"&prog_obj&"','"&prog_result&"','"&prog_target&"','"&prog_aware&"','"&prog_involment&"','"&prog_issues&"','99');" & sql2
set kpi_prog_conn=Server.CreateObject("ADODB.Connection")
kpi_prog_conn.Open ObjConn
set kpi_prog_rs = kpi_prog_conn.Execute(sql)
anotherRecordset = kpi_prog_rs.NextRecordset
response.write anotherRecordset("last_id")
于 2013-07-16T17:38:09.473 回答