mysql 獲取剛插入行id彙總

2022-07-15 12:27:17 字數 2337 閱讀 2526

我們在寫資料庫程式的時候,經常會需要獲取某個表中的最大序號數,

一般情況下獲取剛插入的資料的id,使用select max(id) from table 是可以的。

但在多執行緒情況下,就不行了。

下面介紹三種方法

(1) getgeneratedkeys()方法:

程式片斷:

connection conn = ;

serializable ret = null;

preparedstatement state = .;

resultset rs=null;

try        

} catch (sqlexception e)  

return ret;

(2)last_insert_id:

last_insert_id 是與table無關的,如果向表a插入資料後,再向表b插入資料,last_insert_id會改變。

在多使用者交替插入資料的情況下max(id)顯然不能用。

這就該使用last_insert_id了,因為last_insert_id是基於connection的,只要每個執行緒都使用獨立的connection物件,last_insert_id函式將返回該connection對auto_increment列最新的insert or update*作生成的第乙個record的id。這個值不能被其它客戶端(connection)影響,保證了你能夠找回自己的 id 而不用擔心其它客戶端的活動,而且不需要加鎖。使用單insert語句插入多條記錄,  last_insert_id返回乙個列表。

(3)select @@identity:

string sql="select @@identity";

@@identity是表示的是最近一次向具有identity屬性(即自增列)的表插入資料時對應的自增列的值,是系統定義的全域性變數。一般系統定義的全域性變數都是以@@開頭,使用者自定義變數以@開頭。比如有個表a,它的自增列是id,當向a表插入一行資料後,如果插入資料後自增列的值自動增加至101,則通過select @@identity得到的值就是101。使用@@identity的前提是在進行insert操作後,執行select @@identity的時候連線沒有關閉,否則得到的將是null值。

我們在寫資料庫程式的時候,經常會需要獲取某個表中的最大序號數,

一般情況下獲取剛插入的資料的id,使用select max(id) from table 是可以的。

但在多執行緒情況下,就不行了。

下面介紹三種方法

(1) getgeneratedkeys()方法:

程式片斷:

connection conn = ;

serializable ret = null;

preparedstatement state = .;

resultset rs=null;

try        

} catch (sqlexception e)  

return ret;

(2)last_insert_id:

last_insert_id 是與table無關的,如果向表a插入資料後,再向表b插入資料,last_insert_id會改變。

在多使用者交替插入資料的情況下max(id)顯然不能用。

這就該使用last_insert_id了,因為last_insert_id是基於connection的,只要每個執行緒都使用獨立的connection物件,last_insert_id函式將返回該connection對auto_increment列最新的insert or update*作生成的第乙個record的id。這個值不能被其它客戶端(connection)影響,保證了你能夠找回自己的 id 而不用擔心其它客戶端的活動,而且不需要加鎖。使用單insert語句插入多條記錄,  last_insert_id返回乙個列表。

(3)select @@identity:

string sql="select @@identity";

@@identity是表示的是最近一次向具有identity屬性(即自增列)的表插入資料時對應的自增列的值,是系統定義的全域性變數。一般系統定義的全域性變數都是以@@開頭,使用者自定義變數以@開頭。比如有個表a,它的自增列是id,當向a表插入一行資料後,如果插入資料後自增列的值自動增加至101,則通過select @@identity得到的值就是101。使用@@identity的前提是在進行insert操作後,執行select @@identity的時候連線沒有關閉,否則得到的將是null值。

mysql獲取插入ID

mysql獲取插入id 在mysql中,使用auto increment型別的id欄位作為表的主鍵。通常的做法,是通過 select max id from tablename 的做法,但是顯然這種做法需要考慮併發的情況,需要在事務中對主表以 x鎖 待獲得max id 的值以後,再解鎖。www.2c...

取得剛插入的資料ID

class.forname com.mysql.jdbc.driver string url jdbc mysql localhost bbs?user root password root connection conn drivermanager.getconnection url conn.s...

MYSQL如何獲得剛插入記錄的ID值。

關鍵部分 1。mysql使用sql函式last insert id 獲得剛剛插入的auto increace欄位的id值。必須前一sql為一insert語句,如果是其他語句,返回的id值為零。2。使用command物件的時候,注意不能關閉物件後再用select last insert id 函式,這...