1. 程式人生 > >MYSQL插入資料後返回主鍵

MYSQL插入資料後返回主鍵

最近做專案,要求不能使用mybatis等框架,所以一切資料庫訪問操作都是用原生的JDBC。

用過mybatis的都知道,插入新資料後可以直接返回主鍵的值,但是使用JDBC不行,於是上網搜了一下,找到一個還蠻好用的方法:

SELECT LAST_INSERT_ID();

這個mysql內建函式可以返回當前連線最後一條插入的資料的主鍵,值得注意的是,如果你一次插入了多條記錄,這個函式返回的是第一個記錄的ID值。

但是在實際操作過程中,我遇到了一個坑:

        我是把對資料庫的操作都封裝成了一個方法,每次執行方法前從連線池獲取資料庫連線,執行完馬上就把連線還給資料庫連線池,結果就是我呼叫了一個INSERT方法,這個方法執行完後資料庫連線就返還給連線池了,然後我又執行了

SELECT LAST_INSERT_ID();

此時看起來操作很連貫,沒有問題,但實際上,執行SELECT LAST_INSERT_ID();的資料庫連線跟執行INSERT的資料庫連線並不是同一個,所以我除錯了半天都是返回0。

劃重點

使用SELECT LAST_INSERT_ID();時,切記,要跟使用INSERT語句的資料庫連線是同一個才可以!!!!

參考文章