線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:421
推到 Plurk!
推到 Facebook!

如何確認資料是可以回復的 Rollback

答題得分者是:P.D.
adonis
高階會員


發表:139
回覆:258
積分:159
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2017-06-09 19:08:16 IP:114.46.xxx.xxx 未訂閱
我的環境為 XE7, FB2.5, 使用FDConnection作為連結的方式
[code delphi]
FDCon:TFDConnection;
FDCon.TxOptions.Isolation := xiReadCommitted;
FDcon.TxOptions.AutoCommit:= False;
FDcon.StartTransaction;
try
   // ...
   FDQuery1.ExecSQL;
   // ...
   FDCon.Commit;
 except    
   Rollback;
 end;
[/code]
commit後資料改變了, 想問的是...
若commit成功後緊接著去執行Rollback是否會回復原異動資料?還是只有在commit失敗時, Rollback才有作用?

不論是否commit成功後緊接著去執行Rollback  or  commit成功後刻意產生一個例外而去執行Rollback 都不會回復資料且會出現  invalid transaction handle

那...我要如何驗證Rollback時..資料是可以正常回復?

 
------
我也在努力學習中,若有錯謬請見諒。
P.D.
版主


發表:571
回覆:3880
積分:3666
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2017-06-09 22:36:09 IP:118.160.xxx.xxx 未訂閱
一般而言, commit 與 rollback 是對立的, 既已commit 就代表完成交易, rollback 是無效的, 如果你想要 commit 之後又有 rollback 的功能, 就要把這次交易的記錄全數丟到其他暫存檔保留起來, 再來也不是用rollback還原, 而是讀取暫存檔記錄回來, 提供參考...
通常是 commit 失敗, 會用 try except 包起來執行 rollback
===================引 用 adonis 文 章===================
我的環境為 XE7, FB2.5, 使用FDConnection作為連結的方式
[code delphi]
FDCon:TFDConnection;
FDCon.TxOptions.Isolation := xiReadCommitted;
FDcon.TxOptions.AutoCommit:= False;
FDcon.StartTransaction;
try
   // ...
   FDQuery1.ExecSQL;
   // ...
   FDCon.Commit;
 except    
   Rollback;
 end;
[/code]
commit後資料改變了, 想問的是...
若commit成功後緊接著去執行Rollback是否會回復原異動資料?還是只有在commit失敗時, Rollback才有作用?

不論是否commit成功後緊接著去執行Rollback  or  commit成功後刻意產生一個例外而去執行Rollback 都不會回復資料且會出現  invalid transaction handle

那...我要如何驗證Rollback時..資料是可以正常回復?

 
系統時間:2017-10-23 3:03:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!