[英]MySQL LAST_INSERT_ID() returns 0 instead of recently inserted ID
我需要使用从表 A 生成的 ID 将值插入到表 B 中。由于表 A 有主键,即 auto_increment 我尝试使用select LAST_INSERT_ID()
来获取最近插入的值的 id。 但是 LAST_INSERT_ID() 返回 0。
这是我用来执行插入的 Scala 函数
def insertNewTagsAndMap(conceptCode : String, questionId : String, tagNames : List[String]) {
for (tagName <- tagNames) {
DB.withTransaction { implicit conn =>
val tagInsertionQuery = SQL("""
INSERT INTO tbl_tags(tag_name) values ({tag_name});
""")
.on("tag_name"->tagName).executeInsert()
}
DB.withConnection { implicit conn =>
val getRecentTagIdQuery = SQL(
"SELECT LAST_INSERT_ID() as id_for_tag;"
)
var tagId = getRecentTagIdQuery().head[Int]("id_for_tag")
println(tagId.getClass)
}
mapTagToQuestion(conceptCode, questionId, tagId)
}
}
根据文档,如果连接尚未成功插入,则从LAST_INSERT_ID()
返回 0。
在 Scala withConnection
中,每次调用时都会获取并关闭连接。
看起来您首先使用的是withTransaction
,然后是withConnection
。 尝试在一个代码块中执行这两项操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.