隨筆-7  評(píng)論-24  文章-102  trackbacks-0

          內(nèi)容引用自:
          @@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的作用
          相同點(diǎn):
          它們都返回插入到IDENTITY列中的值

          不同點(diǎn):

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

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

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


          經(jīng)驗(yàn):
            根據(jù)不同的使用場(chǎng)合,選擇不同的函數(shù)。如果在寫存儲(chǔ)過程時(shí),向表中新增了一條數(shù)據(jù),需要返回該IDENTITY值,則使用 SCOPE_IDENTITY(),因?yàn)樗彤?dāng)前會(huì)話相關(guān)聯(lián),不會(huì)返回一個(gè)你不需要的值。如果你僅僅想得到某個(gè)IDENTITY列的最后一個(gè)值,則使用 IDENT_CURRENT()最方便。

          posted on 2010-04-20 22:42 黃小二 閱讀(338) 評(píng)論(0)  編輯  收藏 所屬分類: [DB].SQL Server
          主站蜘蛛池模板: 新晃| 海伦市| 邮箱| 巴塘县| 临夏县| 拉萨市| 兴海县| 浪卡子县| 长汀县| 洛南县| 河间市| 泽普县| 炎陵县| 陆良县| 和政县| 凌源市| 南安市| 荣昌县| 德惠市| 会昌县| 三亚市| 萨迦县| 田林县| 梁山县| 湛江市| 平潭县| 吉水县| 垣曲县| 鄯善县| 玛沁县| 团风县| 龙口市| 文成县| 兴义市| 朝阳市| 吉首市| 安新县| 南川市| 台东县| 乳源| 峡江县|