隨筆-7  評論-24  文章-102  trackbacks-0

          內容引用自:
          @@IDENTITY,SCOPE_IDENTITY和IDENT_CURRENT的辨析
          http://www.cnblogs.com/xlong1900/archive/2008/09/01/1281001.html



          @@IDENTITY,SCOPE_IDENTITY和IDENT_CURRENT的辨析

          SQLServer中@@IDENTITY,SCOPE_IDENTITY和IDENT_CURRENT的作用
          相同點:
          它們都返回插入到IDENTITY列中的值

          不同點:

            A.  @@IDENTITY不受作用域(存儲過程、觸發器、函數或批處理)的限制。返回最后一個插入的IDENTITY值。如果在程序中不同的作用域插入的表不同,那么返回最后一個表插入的IDENTITY值。例如:作用域A(存儲過程)在表T1上插入IDENTITY列,而T1上的觸發器會在T2上插入IDENTITY列。則用@@IDENTITY返回T2上插入的IDENTITY值。

            B. SCOPE_IDENTITY()受作用域的限制,只返回當前作用域中的最后一個IDENTITY值。上例中,如果在存儲過程中使用SCOPE_IDENTITY(),則返回T1的IDENTITY值。

            C. IDENT_CURRENT()不受作用域的限制,調用它時必須提供表示表名的字符型參數,你可以得到你想要的任何表的最后一個IDENTITY值,即使你的代碼里沒有插入動作。例如:IDENT_CURRENT(
          'T1');


          經驗:
            根據不同的使用場合,選擇不同的函數。如果在寫存儲過程時,向表中新增了一條數據,需要返回該IDENTITY值,則使用 SCOPE_IDENTITY(),因為它和當前會話相關聯,不會返回一個你不需要的值。如果你僅僅想得到某個IDENTITY列的最后一個值,則使用 IDENT_CURRENT()最方便。

          posted on 2010-04-20 22:42 黃小二 閱讀(338) 評論(0)  編輯  收藏 所屬分類: [DB].SQL Server
          主站蜘蛛池模板: 图们市| 庆云县| 政和县| 融水| 榕江县| 新津县| 上饶市| 哈巴河县| 澄迈县| 永平县| 吴江市| 绩溪县| 大余县| 盐亭县| 雷波县| 皋兰县| 罗平县| 娄底市| 贡觉县| 久治县| 富宁县| 方正县| 佳木斯市| 买车| 沧源| 北海市| 潮州市| 锡林浩特市| 巴楚县| 肇庆市| 安远县| 大同县| 开封市| 霍州市| 崇信县| 江陵县| 云龙县| 安塞县| 邢台市| 丰县| 通化市|