最近在公司做demo時,遇到了sql server,獲取表資料的剛剛插入的id值,經過查詢sql提供了三種方法對最後插入的id進行查詢:
@@identity
ident_current(tablename)
scope_identity()
注:使用時,可以as ***,可以在下方rs.getstring()shi使用
三種區別如下:
@@identity 得到的是跨域最新id
ident_current(tablename)得到的是指定表的最新id
scope_identity得到的是當前資料庫中的最後插入表的id
例子:資料說明:
database1_table:hrmdepartment
database2_table:wzlcus/wzllinkman
以此在所屬資料庫下執行以下語句:
insert wzlcus(cname) values('ceshi');--假設結果 1
insert wzllinkman(lcid) values('6');--假設結果 3
insert hrmdepartment(departmentmark,departmentname,supdepid) values('測試','測試','1');--假設結果 10
然後回到database2下:
select @@identity,跨域,所以得到10
select ident_current('wzlcus'),不跨域,返回指定表的最後的id,插入得到結果1
select scope_identity() ,不跨域,但是未指定表,所以得到結果本資料庫的最後插入的id,3
但是,在高併發訪問下,以上都會有問題,在大量資料面前,系統提供的函式,都是渣渣
JDBC獲取新插入記錄id的三種方法
在一對多的關聯操作中,通常在一方插入記錄後,需要獲取到當前記錄的id,以方便進行多方的插入操作。要解決這一問題,在jdbc中至少有三種不同的實現方法 1.在插入語句後新增一條查詢,利用resultset來得到id號 psmt con.preparestatement insert into orde...
利用JDBC獲取新插入記錄id的三種方法
在一對多的關聯操作中,通常在一方插入記錄後,需要獲取到當前記錄的id,以方便進行多方的插入操作。要解決這一問題,在jdbc中至少有三種不同的實現方法 1.在插入語句後新增一條查詢,利用resultset來得到id號 psmt con.preparestatement insert into orde...
關於SQL三種獲取自增長的ID方法
關於sql三種獲取自增長的id方法 sql server中的三種獲得自增長id的方法 這個功能比較常用,所以記下來以防自己忘掉。scope identity 返回插入到同一作用域中的 identity 列內的最後乙個 identity 值。乙個作用域就是乙個模組 儲存過程 觸發器 函式或批處理。因此...