在After Insert觸發器中使用INSERT後,影響SCOPE_IDENTITY 問題
在SQL SERVER中,給出了三個獲取自增量值的函式:
IDENT_CURRENT 返回為某個會話和用域中的指定表生成的最新標識值。
@@IDENTITY 返回為跨所有作用域的當前會話中的某個表生成的最新標識值。
SCOPE_IDENTITY 返回為當前會話和當前作用域中的某個表生成的最新標識值。
在上述三種方法中,只有IDENT_CURRENT 需要指定表:
IDENT_CURRENT( 'table_name' )
SCOPE_IDENTITY 與 @@IDENTITY不同點:
SCOPE_IDENTITY 只返回插入到當前作用域中的值
@@IDENTITY 不受限於特定的作用域
MSDN事例:
例如,有兩個表 T1 和 T2,並且在 T1 上定義了 INSERT 觸發器。 當將某行插入 T1 時,觸發器激發,並在 T2 中插入一行。 該方案演示了兩個作用域:在 T1 上的插入,以及在 T2 通過觸發器的插入。
假設 T1 和 T2 都有標識列,@@IDENTITY 和 SCOPE_IDENTITY 將在 T1 上的 INSERT 語句結束後返回不同的值。 @@IDENTITY 將返回在當前會話中的任何作用域內插入的最後一個標識列的值。 這是在 T2 中插入的值。 SCOPE_IDENTITY() 將返回在 T1 中插入的 IDENTITY 值。 這是在同一個作用域內發生的最後的插入。 如果在任何 INSERT 語句作用於作用域中的標識列之前呼叫 SCOPE_IDENTITY() 函式,則該函式將返回 Null
總結:推薦大家使用SCOPE_IDENTITY()
由龐順龍最後編輯於:4年前
內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。
相關文章
- Oracle中的insert/insert all/insert firstOracle
- SQLServer IDENTITY_INSERT問題SQLServerIDE
- mysql insert into ... select的鎖問題MySql
- 解析MySQL中INSERT INTO SELECT的使用MySql
- SQLite 之 INSERT OR REPLACE使用SQLite
- Seata-AT模式+TDDL:構建Insert操作的後映象在執行SELECT LAST_INSERT_ID()時報錯模式AST
- insert into select
- 使用JDBC時,加速批量insertJDBC
- insert all和insert first語句的用法
- SQL__INSERTSQL
- E - Insert or Erase
- insert images to a plot
- 教你使用SQLite-insert語句SQLite
- 故障分析 | 從 Insert 併發死鎖分析 Insert 加鎖原始碼邏輯原始碼
- mysql中last_insert_id()用法MySqlAST
- mysql同一個事務中update,insert導致死鎖問題分析解決MySql
- leetcode–57–Insert IntervalLeetCode
- SQLite Insert 語句SQLite
- ArrayList宣告,Add(), Insert();
- Python中insert用法及實戰案例!Python
- mysql 在delete、insert、update 時,page的變化MySqldelete
- GreatSQL 中 Insert 慢是什麼情況?SQL
- MySQL中REPLACE INTO和INSERT INTO的區別分析MySql
- Oracle中 Update和insert結合語法Oracle
- LeetCode之Insert Interval(Kotlin)LeetCodeKotlin
- Leetcode 35 Search Insert PositionLeetCode
- [20180907]insert+with+select.txt
- insert和insertSelective區別
- lightdb -- merge into insert 相容 OracleOracle
- mysql insert的特殊用法MySql
- 1089 Insert or Merge (25分)
- mysql insert導致死鎖MySql
- Oracle-insert into加日期Oracle
- insert()與substr()函式函式
- 鍵盤insert操作怎麼取消?電腦鍵盤insert操作取消教程
- MySQL 關於 INSERT INTO...ON DUPLICATE KEY UPDATE 的使用MySql
- 【MySQL】四、Insert buffer 漫談MySql
- [20180801]insert導致死鎖.txt