SELECT LAST_INSERT_ID - 不生成数值

时间:2012-08-07 00:57:33

标签: mysql sql asp-classic

我正在尝试从我的数据库中获取最后一个插入的id以用于另一个查询,但是......当我检查它是否是数值时,它会失败!

// my big insert query goes here //

Set rs = conn.Execute("SELECT LAST_INSERT_ID();")
member_id = rs(0)
rs.Close : Set rs = Nothing

If member_id <> "" AND IsNumeric(member_id) Then
    conn.Execute(" INSERT INTO members_reputation (member_id, awarded_for, awarded_when, awarded_what) " _
    & "VALUES ("&member_id&", 'Created an account', Now(), 1); ")
Else
    Response.Write member_id //testing
    Response.End // testing
End If

正如您所看到的,如果IsNumeric条件失败,我将member_id写入屏幕(仅用于测试),该屏幕成功显示正确的ID,但显然,它不是数字,因此下一个查询不会触发!

这是为什么?围绕它的最佳解决方案是什么?

更新

好的,我通过使用TRIM()解决了这个问题:

If Trim(member_id) <> "" AND IsNumeric(Trim(member_id)) Then

这使我感到高兴,因为它有效,但让我感到难过,因为知道这样一个简单的获取数字ID的过程失败了。如何向SQL询问整数ID,产生空格? DB字段中显然没有空格,我的代码中也没有空格。如果有人有任何想法,我仍然希望得到答案吗?

1 个答案:

答案 0 :(得分:0)

mysql_insert_id是获取上次查询中生成的ID。至于你的情况,mysql_insert_id之前没有查询。您可以执行以返回MAX(member_id)。