IDENT_CURRENT、@@IDENTITY 和 SCOPE_IDENTITY 的區別
1
IDENT_CURRENT 返回為任何會話和任何作用域中的特定表最後生成的標識值。
@@IDENTITY 返回為當前會話的所有作用域中的任何表最後生成的標識值。
SCOPE_IDENTITY 返回為當前會話和當前作用域中的任何表最後生成的標識值。
2 各自的用法:
IDENT_CURRENT
返回為任何會話和任何作用域中的指定表最後生成的標識值。
語法
IDENT_CURRENT('table_name')
引數
table_name
是將要返回其標識值的表的名稱。table_name 的資料型別為 varchar,沒有預設值。
返回型別
sql_variant
SCOPE_IDENTITY
返回插入到同一作用域中的 IDENTITY 列內的最後一個 IDENTITY 值。一個作用域就是一個模組——儲存過程、觸發器、函式或批處理。因此,如果兩個語句處於同一個儲存過程、函式或批處理中,則它們位於相同的作用域中。
語法
SCOPE_IDENTITY( )
返回型別
sql_variant
@@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。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-609097/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- @@IDENTITY、SCOPE_IDENTITY()和IDENT_CURRENT()的辨析IDE
- SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY(zt)IDE
- @@IDENTITY與SCOPE_IDENTITY()IDE
- SQL @@Identity ,Scope_identity() 作用域SQLIDE
- select SCOPE_IDENTITY()用法IDE
- 自增長列和序列的區別(identity與sequence的區別)IDE
- 在After Insert觸發器中使用INSERT後,影響SCOPE_IDENTITY 問題觸發器IDE
- ../和./和/的區別
- 和 的區別
- as 和 with的區別
- ||和??的區別
- /*和/**的區別
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- ./ 和sh 的區別
- JQuery this和$(this)的區別jQuery
- jquery $(this) 和this的區別jQuery
- T和?的區別
- ++a和a++的區別
- makefile =和:=的區別
- Mybatis中#{}和${}傳參的區別及#和$的區別小結MyBatis
- 和區別
- MYSQL和SQL的區別MySql
- varchar和char的區別
- &self 和 self 的區別
- var和public的區別
- filter和interceptor的區別Filter
- useEffect 和 useLayoutEffect 的區別
- SDK和API的區別?API
- var 和 let 的區別
- WebApi和MVC的區別WebAPIMVC
- service和systemctl的區別
- GET和POST的區別?
- GET和POST的區別
- button和submit的區別MIT
- GET 和 POST 的區別
- 【Java】equals 和 == 的區別Java
- django和flask的區別DjangoFlask