SQL 獲取最新ID,scope_identity() ,@@identity,ident_current


    --scope_identity ()用這個方法的返回值是null,因爲它返回的是當前會話、作用域的identity的最後一個值

    --@@identity 返回當前會話中任何作用域的identity 的值

    --ident_current('表名') 返回指定的表的最後一個identity的值,與會話、作用域無關


@@IDENTITY  
返回最後插入的標識值。  
 
語法  
@@IDENTITY  
 
返回類型  
numeric  
 
註釋  
在一條  INSERT、SELECT  INTO  或大容量複製語句完成後,@@IDENTITY  中包含此語句產生的最後的標識值。若此語句沒有影響任何有標識列的表,則  @@IDENTITY  返回  NULL。若插入了多個行,則會產生多個標識值,@@IDENTITY  返回最後產生的標識值。如果此語句激發一個或多個執行產生標識值的插入操作的觸發器,則語句執行後立即調用  @@IDENTITY  將返回由觸發器產生的最後的標識值。若  INSERT  或  SELECT  INTO  語句失敗或大容量複製失敗,或事務被回滾,則  @@IDENTITY  值不會還原爲以前的設置。  
 
在返回插入到表的  @@IDENTITY  列的最後一個值方面,@@IDENTITY、SCOPE_IDENTITY  和  IDENT_CURRENT  函數類似。    
 
@@IDENTITY  和  SCOPE_IDENTITY  將返回在當前會話的所有表中生成的最後一個標識值。但是,SCOPE_IDENTITY  只在當前作用域內返回值,而  @@IDENTITY  不限於特定的作用域。  
 
IDENT_CURRENT  不受作用域和會話的限制,而受限於指定的表。IDENT_CURRENT  返回任何會話和任何作用域中爲特定表生成的標識值。

————————一條分隔線—————————————

3種返回最大標識值的方法的不同點:  
 
IDENT_CURRENT  返回爲任何會話和任何作用域中的特定表最後生成的標識值。  
 
 
@@IDENTITY  返回爲當前會話的所有作用域中的任何表最後生成的標識值。  
 
 
SCOPE_IDENTITY  返回爲當前會話和當前作用域中的任何表最後生成的標識值。(防止返回觸發器中的insert的IDENTITY值)  

————————又來一條—————————————

@@IDENTITY  
返回最後插入的標識值。  
 
語法  
@@IDENTITY  
 
返回類型  
numeric 

————————又來一條—————————————

註釋  
在一條  INSERT、SELECT  INTO  或大容量複製語句完成後,@@IDENTITY  中包含此語句產生的最後的標識值。若此語句沒有影響任何有標識列的表,則  @@IDENTITY  返回  NULL。若插入了多個行,則會產生多個標識值,@@IDENTITY  返回最後產生的標識值。如果此語句激發一個或多個執行產生標識值的插入操作的觸發器,則語句執行後立即調用  @@IDENTITY  將返回由觸發器產生的最後的標識值。若  INSERT  或  SELECT  INTO  語句失敗或大容量複製失敗,或事務被回滾,則  @@IDENTITY  值不會還原爲以前的設置。  
 
在返回插入到表的  @@IDENTITY  列的最後一個值方面,@@IDENTITY、SCOPE_IDENTITY  和  IDENT_CURRENT  函數類似。    
 
@@IDENTITY  和  SCOPE_IDENTITY  將返回在當前會話的所有表中生成的最後一個標識值。但是,SCOPE_IDENTITY  只在當前作用域內返回值,而  @@IDENTITY  不限於特定的作用域。  
 
IDENT_CURRENT  不受作用域和會話的限制,而受限於指定的表。IDENT_CURRENT  返回任何會話和任何作用域中爲特定表生成的標識值。有關更多信息,請參見  IDENT_CURRENT。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章