簡體   English   中英

MySQL LAST_INSERT_ID() 返回 0 而不是最近插入的 ID

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM