SqlServer獲取剛剛插入數據的id


第一種方法:

  select IDENT_CURRENT('table_name') --返回為任何會話和任何作用域中的特定表最后生成的標識值,它不受作用域和會話的限制,而受限於所指定的表

  insert into table_name values(colvalue1,colvalue2) ;  select ident_current('table_name ')

第二種方法:

  select @@IDENTITY --返回為當前會話的所有作用域中的任何表最后生成的標識值。

  insert into table_name  values(colvalue1,colvalue2) ;  select @@identity

第三種方法:

  select SCOPE_IDENTITY() --返回為當前會話和當前作用域中的任何表最后生成的標識值。

  INSERT INTO table_name  values(colvalue1,colvalue2); select scope_identity();

備注:SCOPE_IDENTITY 和 @@IDENTITY 返回在當前會話中的任何表內所生成的最后一個標識值。但是,SCOPE_IDENTITY 只返回插入到當前作用域中的值;@@IDENTITY 不受限於特定的作用域

前三種方法都是返回numeric類型結果,對於非numeric類型的id無效,如GUID,若要獲取這樣類型的ID,則可以使用下面的方法

第四種方法:

  MSSQL2005以后新增了一個output,用來輸入某個值,此方法不限類型

  要輸入的字段inserted.id一定要放在 values之前,不能放在sql語句的最后面,不然是出錯的,inserted是固定的,你想輸入當前插入的某個字段就在后面接這個字段即可

  insert into table_name(col1,col2) output inserted.col1 values(colvalue1,colvalue2);

 


免責聲明!

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



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