如何確認資料是可以回復的 Rollback |
答題得分者是:P.D.
|
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
我的環境為 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.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
一般而言, 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時..資料是可以正常回復? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |