簡體   English   中英

INSERT Batch之后我可以用LAST_INSERT_ID()進行SELECT選擇嗎?

[英]Can I SELECT with LAST_INSERT_ID() after INSERT Batch without any cares?

我問自己,在一批INSERT之后是否可以在WHERE子句中使用LAST_INSERT_ID()進行SELECT而不會在表中獲得損壞的數據? 我正在考慮多個用戶同時做同樣事情的場景。 我開發了一個可以實現這種情況的JSF應用程序。

在硬代碼中,我在INSERT之后的SELECT看起來像這樣:

preparedstatement.addBatch(
              "INSERT INTO table1(all the FIELDS)"
              + "VALUES(null, ...);"
      );

      preparedstatement.addBatch(
              "INSERT INTO table2(all the FIELDS)"
              + "VALUES(null, LAST_INSERT_ID(), ...);"          
      );


      preparedstatement = connect.prepareStatement(

              "SELECT id FROM table3 WHERE id = LAST_INSERT_ID();"

      );

      preparedstatement.executeBatch();
      resultSet = preparedstatement.executeQuery();

讓我對此實現有疑問,還是有更好的方法?

最好的祝福

你應該沒問題,引用MySQL的文檔:

生成的ID在每個連接的基礎上在服務器中維護。 這意味着函數返回給定客戶端的值是為該客戶端影響AUTO_INCREMENT列的最新語句生成的第一個AUTO_INCREMENT值。 此值不受其他客戶端的影響,即使它們生成自己的AUTO_INCREMENT值。 此行為可確保每個客戶端都可以檢索自己的ID,而無需關心其他客戶端的活動,也無需鎖定或事務。

MySQL Last_insert_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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