在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
- bulk insert 在mssql中使用SQL
- SQLServer IDENTITY_INSERT問題SQLServerIDE
- insert的時候使用append會不會影響到表的大小APP
- mysql insert into ... select的鎖問題MySql
- myisam對於update,insert,delete關於auto_incremant的影響deleteREM
- innodb對於update,insert,delete關於auto_incremant的影響deleteREM
- insert append需要注意的問題APP
- insert中啟用錯誤日誌的問題及分析
- SQLite INSERT OR REPLACE使用SQLite
- 解析MySQL中INSERT INTO SELECT的使用MySql
- 檢視insert,delete,update對基表的影響(檢視初識)delete
- PL/sql中怎樣得到insert,update,delete語句執行後,受影響的紀錄行數關鍵字SQLdelete
- MySQL中insert語句沒有響應的問題分析(r11筆記第21天)MySql筆記
- mysql insert語句錯誤問題解決MySql
- SQLite 之 INSERT OR REPLACE使用SQLite
- Oracle 的 INSERT ALL和INSERT FIRSTOracle
- Seata-AT模式+TDDL:構建Insert操作的後映象在執行SELECT LAST_INSERT_ID()時報錯模式AST
- 使用Direct-Path INSERT插入資料到表中
- oralce觸發器解決問題觸發器
- c#中的insert操作C#
- insert /*+ append */ into 與insert into 的區別APP
- INSERT ALL 和INSERT FIRST 的區別
- SQL Sever 2000中的前觸發器和後觸發器SQL觸發器
- 使用JDBC時,加速批量insertJDBC
- Multitable Insert
- 解決vim在insert模式下面用backspace鍵無法刪除的問題模式
- Oracle使用觸發器實現ID自增的問題Oracle觸發器
- oracle觸發器~ 更新多表的問題Oracle觸發器
- SQLite中特殊的INSERT語句SQLite
- insert 中append 用法詳解APP
- mysql中last_insert_id()用法MySqlAST
- mysql同一個事務中update,insert導致死鎖問題分析解決MySql
- oracle bulk Insert 比insert 快不是一點啊.Oracle
- 故障分析 | 從 Insert 併發死鎖分析 Insert 加鎖原始碼邏輯原始碼
- 教你使用SQLite-insert語句SQLite
- 一條insert語句導致的效能問題分析(二)
- 一條insert語句導致的效能問題分析(一)