mysql字符串,mysql 自增長id string_Mysql中獲取剛插入的自增長id的三種方法歸納

 2023-11-18 阅读 24 评论 0

摘要:我們在寫數據庫程序的時候,經常會需要獲取某個表中的最大序號數,mysql字符串?一般情況下獲取剛插入的數據的id,使用select max(id) from table 是可以的。但在多線程情況下,就不行了。下面介紹三種方法(1)?getGeneratedKeys()方法:程序片斷:Connection?conn

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

mysql字符串?一般情況下獲取剛插入的數據的id,使用select max(id) from table 是可以的。

但在多線程情況下,就不行了。

下面介紹三種方法

(1)?getGeneratedKeys()方法:

程序片斷:

Connection?conn=...;

Serializable ret = null;

PreparedStatement??state=??conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);

ResultSet rs=null;

try {

state.executeUpdate();

rs = state.getGeneratedKeys();

if (rs.next()) {

ret = (Serializable) rs.getObject(1);

}

} 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值。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/178046.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息