MySQL LAST_INSERT_ID()返回0代替最近插入的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)
}
}

根据文档,如果连接尚未成功执行INSERT,则从LAST_INSERT_ID()返回0。

在Scala中,withConnection在每次被调用时获取并关闭连接。

看起来你是使用第一个withTransactionwithConnection之后。尝试在一个代码块中完成这两个操作。

相关内容

  • 没有找到相关文章

最新更新