好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 對有insert觸發器表取IDENTITY值時發現的問題

對有insert觸發器表取IDENTITY值時發現的問題

熱門標簽:湖南電腦外呼系統平臺 長沙智能外呼系統 電銷機器人公司 需要哪些牌照 地圖標注牌 分享百度地圖標注多個位置 菏澤語音電銷機器人加盟公司 廣東防封卡外呼系統原理是什么 知名電銷機器人價格 外呼系統改進
問題是這樣的:
T1表上有一個INSERT的觸發器,在插入數據的時候,會自動往T2表里面插一條記錄
這樣當我在T1表上插入新的數據時,取@@IDENTITY的時候,返回的id值是T2表里面的新記錄的值

趕快查了下msdn,原來@@IDENTITY還有這么多講究:

在一條 INSERT、SELECT INTO 或大容量復制語句完成后,@@IDENTITY 中包含語句生成的最后一個標識值。如果語句未影響任何包含標識列的表,則 @@IDENTITY 返回 NULL。如果插入了多個行,生成了多個標識值,則 @@IDENTITY 將返回最后生成的標識值。如果語句觸發了一個或多個觸發器,該觸發器又執行了生成標識值的插入操作,那么,在語句執行后立即調用 @@IDENTITY 將返回觸發器生成的最后一個標識值。如果對包含標識列的表執行插入操作后觸發了觸發器,并且觸發器對另一個沒有標識列的表執行了插入操作,則 @@IDENTITY 將返回第一次插入的標識值。出現 INSERT 或 SELECT INTO 語句失敗或大容量復制失敗,或者事務被回滾的情況時,@@IDENTITY 值不會恢復為以前的設置。


如果語句和事務失敗,它們會更改表的當前標識,從而使標識列中的值出現不連貫現象。即使未提交試圖向表中插入值的事務,也永遠無法回滾標識值。例如,如果因 IGNORE_DUP_KEY 沖突而導致 INSERT 語句失敗,表的當前標識值仍然會增加。
@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 是相似的函數,因為他們都返回插入到表的 IDENTITY 列的最后一個值。
@@IDENTITY 和 SCOPE_IDENTITY 可以返回當前會話中的所有表中生成的最后一個標識值。但是,SCOPE_IDENTITY 只在當前作用域內返回值,而 @@IDENTITY 不限于特定的作用域。
IDENT_CURRENT 不受作用域和會話的限制,而受限于指定的表。IDENT_CURRENT 可以返回任何會話和任何作用域中為特定表生成的標識值。
@@IDENTITY 函數的作用域是執行該函數的本地服務器上的當前會話。此函數不能應用于遠程或鏈接服務器。若要獲得其他服務器上的標識值,請在遠程服務器或鏈接服務器上執行存儲過程,并使(在遠程或鏈接服務器的環境中執行的)該存儲過程收集標識值,并將其返回本地服務器上的發出調用的連接。


所以對多個表進行操作的時候,最好用
SELECT SCOPE_IDENTITY()和SELECT IDENT_CURRENT(‘T1')方式

標簽:天水 福建 泉州 美容院 呼和浩特 西寧 珠海 商洛

巨人網絡通訊聲明:本文標題《對有insert觸發器表取IDENTITY值時發現的問題》,本文關鍵詞  對有,insert,觸發器,表取,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《對有insert觸發器表取IDENTITY值時發現的問題》相關的同類信息!
  • 本頁收集關于對有insert觸發器表取IDENTITY值時發現的問題的相關信息資訊供網民參考!
  • 推薦文章