sql執行insert插入一條記錄同時獲取剛插入的id


有兩種方式可以獲得剛新插入的id
  ①從inserted臨時表中查詢
  ②使用全局變量@@identity 查詢

1、使用 output 關鍵字輸出inserted臨時表的 id

在執行insert之后,inserted 為已插入的臨時表,可以從臨時表得到剛剛插入該表的 id 了。

insert into t_student(name,studentno,sex,age) 
output inserted.id values('張連康','101001','男',22)

 

 

 

 

2、使用SQL的變量或全局參數
select @@IDENTITY --返回為當前會話的所有作用域中的任何表最后生成的標識值。
select IDENT_CURRENT('table_name') --返回為任何會話和任何作用域中的特定表最后生成的標識值,它不受作用域和會話的限制,而受限於所指定的表
select SCOPE_IDENTITY() --返回為當前會話和當前作用域中的任何表最后生成的標識值。

 

最常使用的應該是 @@identity ,但是它是全局下的新插入的id,也就是如果有多線程的話,那么獲取的不一定是想要的結果。

insert into t_student(studentNo,name,sex,age) values('15040241059','zlk','man',22)
select @@IDENTITY

  我們建立一個觸發器來測試這種方式得到的id,觸發器的效果為:當向 t_student 表中插入一條記錄時,同時也向 t_class 表中插入一條記錄。

create trigger trig_studentClass
	on t_student for insert
as 
	insert into t_class (classNo,className) 
	values('001','計算機科學與技術')

 

 

 

這三個的更多的使用說明,可以查看SQL聯機幫助手冊,里面有詳細的說明。

 

 

出處:https://blog.csdn.net/tink_bell/article/details/81661165


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM