首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 暫存表使用必知 6 大注意事項

     編輯:DB2 教學

暫存表關鍵規則

  1. 建立語法: `DECLARE GLOBAL TEMPORARY TABLE ...`(非 `CREATE`),必須在**使用者暫存表空間**建立。
  2. 表空間前置: 資料庫建立時**不自動建立**使用者暫存表空間,需 DBA 先 `CREATE USER TEMPORARY TABLESPACE`。
  3. Schema 固定: 暫存表 Schema 永遠是 `SESSION`,引用時可省略或寫 `SESSION.TAB`。
  4. Commit 預設清空: `ON COMMIT PRESERVE ROWS` 可保留資料,預設 `ON COMMIT DELETE ROWS`。
  5. Rollback 刪除表: 執行 `ROLLBACK` 會**刪除暫存表定義**,而非僅回滾資料。
  6. V8+ 支援日誌: `LOGGED` / `NOT LOGGED` 選項控制是否記錄重做日誌(預設 `NOT LOGGED`)。

建立範例

-- 先建立使用者暫存表空間
CREATE USER TEMPORARY TABLESPACE usrtmp
  MANAGED BY SYSTEM USING ('/db2tmp/usrtmp')
  BUFFERPOOL IBMDEFAULTBP;

-- 應用程式中宣告
DECLARE GLOBAL TEMPORARY TABLE SESSION.TMP_ORDERS (
  ORDER_ID  INT NOT NULL,
  CUST_ID   INT,
  AMT       DECIMAL(12,2)
) ON COMMIT PRESERVE ROWS NOT LOGGED;

常見誤區

誤區正確認知
以為 `CREATE GLOBAL TEMPORARY TABLE` 存在DB2 無此語法,唯有 `DECLARE GLOBAL TEMPORARY TABLE`
以為暫存表跨 Session 可見嚴格 Session 級私有,Session 結束自動消失
在一般表空間建立暫存表**必須**在 USER TEMPORARY TABLESPACE
ROLLBACK 後繼續用同暫存表ROLLBACK 會 Drop 表,需重新 DECLARE
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved