事務處理 多步操作回滾

2022-02-18 00:42:55 字數 1350 閱讀 6330

class program

); cstomenlistment.rollbacking += new customenlistment.rollbackingeventhandler(() =>

);transaction.current.enlistvolatile(cstomenlistment, enlistmentoptions.none);

guid guid = new guid("");

transaction.current.enlistdurable(guid, cstomenlistment, enlistmentoptions.none);

transactionscope.complete();}}

catch

thread.sleep(1000);//事務單獨開啟執行緒非同步執行,阻止主線程,用於測試效果

console.writeline(testclass.num1.tostring());

console.writeline(testclass.num2.tostring());

console.writeline(testclass.num3.tostring());

console.read();

}}//兩階段提交 (2pc)

public class customenlistment : ienlistmentnotification

catch

}//提交

public void commit(enlistment enlistment)

//回滾

public void rollback(enlistment enlistment)

//對於方法的說明來自於msdn

//應該為易失性資源管理器實現 indoubt 方法。

//在事務管理器失去與乙個或多個參與者的聯絡(因此其狀態未知)時呼叫此方法。

//如果發生此情況,則無論是否有任何事務參與者處於不一致的狀態,

//您都應該記錄此事實,以便以後進行調查。

public void indoubt(enlistment enlistment)

}/// /// 測試類

///

public class testclass

set

}private static int num2 = 0;

public static int num2

set

}private static int num3 = 0;

public static int num3

set

}}

若有疑問或不正之處,歡迎提出指正和討論

事務處理 回滾(轉賬操作)

jdbc事務處理 四大原則 原子性一致性 隔離性永續性 第一步 實現轉賬操作 假設在賬戶中,蓋倫有餘額5000元,趙信有餘額2000元,蓋倫要向趙信轉賬1000元。public static void outmoney connection conn,string name,int account ...

PHP操作MySQL事務處理

php操作mysql事務處理 用begin,rollback,commit來實現 方法二 conn mysqli connect localhost root root test or die 資料連線錯誤 mysqli query set names utf8mb4 使用gbk中文編碼 開始乙個事...

PB事務處理

1 資料視窗更新,只要dberror有錯誤,而事先沒有做過任何commit工作,那麼rollback可以回滾到上次commit位置,即上次commit後所有的資料將被回滾。2 如果是直接寫入sql語句,只要資料庫出現錯誤,那麼rollback可以回滾到上次commit的位置,即上次commit後所有...