人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

SQL SERVER 2000 中的標識值取得函數

SQL SERVER 2000 中的標識值取得函數

更新時間:2022-07-15 文章作者:未知 信息來源:網絡 閱讀次數:

IDENTITY(標識)列,也有很多人稱之為自增列,在SQL Server 2000中,標識列通過IDENTITY來定義,下面是與獲取最后插入記錄的標識值有關的函數的一個示例說明

   SQL Server 中,可以使用 SCOPE_IDENTITY()、 @@IDENTITY 、 IDENT_CURRENT() 來取得最后插入記錄的值值,它們的區別在于:
  SCOPE_IDENTITY() 返回插入到同一作用域中的 IDENTITY 列內的最后一個 IDENTITY 值。一個作用域就是一個模塊——存儲過程、觸發器、函數或批處理。因此,如果兩個語句處于同一個存儲過程、函數或批處理中,則它們位于相同的作用域中。
  @@IDENTITY 返回在當前會話的所有表中生成的最后一個標識值
  IDENT_CURRENT() 返回為任何會話和任何作用域中的指定表最后生成的標識值
  下面以一個示例來說明它們的區別

  -- a) 示例代碼
  -- ===========================================
  -- 創建測試表
  -- ===========================================
  USE tempdb
  GO

  CREATE TABLE t1(id int IDENTITY,col int)
  INSERT t1 SELECT 1
  UNION ALL SELECT 2
  CREATE TABLE t2(id int IDENTITY,col int)
  GO

  CREATE TRIGGER TR_insert_t2 ON t2
  FOR INSERT
  AS
   INSERT t1 SELECT 3
  GO

  -- ===========================================
  -- 測試三個函數..1
  -- ===========================================
  INSERT t2 VALUES(1)
  SELECT [SCOPE_IDENTITY()]=SCOPE_IDENTITY(),
   [@@IDENTITY]=@@IDENTITY,
   [IDENT_CURRENT() For t1]=IDENT_CURRENT(N''t1''),
   [IDENT_CURRENT() For t2]=IDENT_CURRENT(N''t2'')

  /*--結果
  SCOPE_IDENTITY() @@IDENTITY IDENT_CURRENT() For t1 IDENT_CURRENT() For t2
  ------------------ ------------ -------------------------- -----------------------
  1 3 3 1

  (所影響的行數為 1 行)
  --*/
  GO

  -- ===========================================
  -- 測試三個函數..2
  -- ===========================================
  INSERT t1 VALUES(10)
  SELECT [SCOPE_IDENTITY()]=SCOPE_IDENTITY(),
   [@@IDENTITY]=@@IDENTITY,
   [IDENT_CURRENT() For t1]=IDENT_CURRENT(N''t1''),
   [IDENT_CURRENT() For t2]=IDENT_CURRENT(N''t2'')

  /*--結果
  SCOPE_IDENTITY() @@IDENTITY IDENT_CURRENT() For t1 IDENT_CURRENT() For t2
  ------------------ ------------ -------------------------- -----------------------
  4 4 4 1

  (所影響的行數為 1 行)
  --*/
  GO

  -- ===========================================
  -- 測試三個函數..3
  -- ** 開啟一個新連接,執行下面的代碼 **
  -- ===========================================
  SELECT [SCOPE_IDENTITY()]=SCOPE_IDENTITY(),
   [@@IDENTITY]=@@IDENTITY,
   [IDENT_CURRENT() For t1]=IDENT_CURRENT(N''t1''),
   [IDENT_CURRENT() For t2]=IDENT_CURRENT(N''t2'')

  /*--結果
  SCOPE_IDENTITY() @@IDENTITY IDENT_CURRENT() For t1 IDENT_CURRENT() For t2
  ------------------ ------------ -------------------------- -----------------------
  NULL NULL 4 &n

  --===========================================
  -- 刪除測試環境
  -- ===========================================
  DROP TABLE t1,t2

  -- b) 代碼結果說明
  從上面的代碼可以看到:
  IDENT_CURRENT() 始終返回指定表最后插入的標識值
  @@IDENTITY 返回當前會話的標識值,無論是否在同一個作用域,在測試1、2中,可以看到它返回的是觸發器中插入記錄的標識值,而在測試3中,因為當前會話無插入記錄,所以返回NULL
  SCOPE_IDENTITY() 返回當前會話同一作用域的標識值,所以在測試1、2中,它返回的值不受觸發器的影響,而在測試3中,因為當前會話無插入記錄,所以返回NULL

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 安丘市| 突泉县| 石景山区| 浑源县| 肇庆市| 库尔勒市| 托克托县| 温宿县| 慈利县| 安乡县| 嘉义县| 清远市| 邹城市| 芜湖县| 科技| 理塘县| 泌阳县| 乌苏市| 宁阳县| 商丘市| 三原县| 绥棱县| 百色市| 玉树县| 静乐县| 余江县| 长寿区| 谷城县| 革吉县| 太谷县| 公主岭市| 湘阴县| 阿鲁科尔沁旗| 石楼县| 册亨县| 叙永县| 邛崃市| 永兴县| 长岭县| 延长县| 山阴县|