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

DB2 命令列處理器 CLP 關閉自動提交完整指南

     編輯:DB2 教學

DB2 命令列處理器 CLP 關閉自動提交完整指南

DB2 CLP 預設開啟自動提交,若需在交易中執行多條 SQL 並保持原子性,必須關閉自動提交。本文說明暫時與永久關閉的方法,並附實測範例驗證行為差異。

一、暫時關閉 / 開啟(僅影響目前 CLP 階段作業)

db2 => update command options using C off  -- 暫時關閉自動提交
db2 => update command options using C on   -- 暫時開啟自動提交

二、永久關閉 / 開啟(透過 DB2OPTIONS 環境變數)

C:\DB2> db2set -lr | find /i "db2option"
C:\DB2> db2set DB2OPTIONS=+c   -- +c 永久關閉自動提交
C:\DB2> db2set DB2OPTIONS=-c   -- -c 永久開啟自動提交

設定後可用下列指令驗證:

C:\DB2> db2 list command options | find /i "-c"
-c 自動落實 OFF

三、單次指令覆寫(最高優先權)

在指令前加上 -c(關閉)或 +c(開啟)可單次覆寫目前設定:

C:\DB2> db2 -c insert into c1_sched values ('a',1)
C:\DB2> db2 +c insert into c1_sched values ('b',2)

四、實測驗證:自動提交對 ROLLBACK 的影響

場景 1:自動提交開啟(預設)

C:\DB2> db2 -c insert into c1_sched values ('a',1)
DB20000I SQL 命令成功完成。

C:\DB2> db2 select * from c1_sched
CLASS_CODE DAY
-------------------- --------------------
a          1
1 條記錄已選擇。

C:\DB2> db2 rollback
DB20000I SQL 命令成功完成。

C:\DB2> db2 select * from c1_sched
CLASS_CODE DAY
-------------------- --------------------
a          1
1 條記錄已選擇。  -- 資料仍存在,因自動提交已生效

場景 2:自動提交關閉

C:\DB2> db2 +c insert into c1_sched values ('b',2)
DB20000I SQL 命令成功完成。

C:\DB2> db2 select * from c1_sched
CLASS_CODE DAY
-------------------- --------------------
b          2
a          1
2 條記錄已選擇。

C:\DB2> db2 rollback
DB20000I SQL 命令成功完成。

C:\DB2> db2 select * from c1_sched
CLASS_CODE DAY
-------------------- --------------------
a          1
1 條記錄已選擇。  -- 'b' 被回滾,僅剩 'a'

五、最佳實務建議

  • 開發/測試環境建議永久關閉(db2set DB2OPTIONS=+c),習慣顯式 COMMIT/ROLLBACK。
  • 生產環境批次腳本建議在腳本開頭加入 update command options using C off,結束前 COMMIT。
  • 單次指令覆寫(-c/+c)適合臨時測試,不影響全域設定。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved