有兩種方式可以獲得剛新插入的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聯機幫助手冊,里面有詳細的說明。