//////多資料庫伺服器事務提交
/// ///
key為connname,value為sql語句
///public
bool executemultitran(listsqlstrings)}}
catch
(exception ex)
if (!issuccess)}}
//如果當前事務失敗,把執行過的所有事務物件rollback
if (!issuccess)
reval = false
; }
else
}//關閉conn
foreach (sqlconnection value in
connresult.values)
}return
reval;
}public sqlconnection createconnection(string
keyname)
呼叫:
//1.扣減玩家拍幣數
//2.增加玩家保險櫃金豆數
//3.插入拍幣兌換記錄
private
bool procdata(int userid, int pats, int convertrate, string
clientip)
);//2.增加玩家保險櫃金豆數
sql = "
update gamescoreinfo set insurescore=insurescore+
" + pats * convertrate + "
where userid=
" +userid;
sqls.add(
newstring );
//3.插入拍幣兌換記錄
sql = "
insert into recordconvertuserpat (recordid,userid,curinsurescore,curuserpat,convertuserpat,convertrate,isgameplaza,clientip,collectdate) values(";
sql += ((int)gdata.selectvalue("
select max(recordid) from recordconvertuserpat
", "
dbrecord
", 0) + 1) + ","
; sql += userid + ","
; sql += gdata.selectvalue("
select insurescore from gamescoreinfo where userid=
" + userid, "
dbtreasure
", 0) + ","
; sql += gdata.selectvalue("
select userpat from accountsinfo where userid=
" + userid, "
dbaccounts
", 0) + ","
; sql += pats + ","
; sql += convertrate + ","
; sql += "1,"
; sql += "
'" + clientip + "',"
; sql += "
'" + system.datetime.now.tostring() + "'"
; sql += ")"
; sqls.add(
newstring );
return
gdata.executemultitran(sqls);
}
詳解Mysql分布式事務XA(跨資料庫事務)
在開發中,為了降低單點壓力,通常會根據業務情況進行分表分庫,將表分布在不同的庫中 庫可能分布在不同的機器上 在這種場景下,事務的提交會變得相對複雜,因為多個節點 庫 的存在,可能存在部分節點提交失敗的情況,即事務的acid特性需要在各個不同的資料庫例項中保證。比如更新db1庫的a表時,必須同步更新d...
資料庫事務
事件是訪問並可能更新各種資料項的乙個程式執行單元。事件由事務開始與事務結束之間執行的全體操作組成。為了保證資料完整性,資料庫系統需要維護事務的以下性質 原子性 atomicity 事務中的操作要麼全部成功,要麼全部失敗。一致性 consistency 事務執行前後要保持資料庫的一致性。隔離性 iso...
資料庫 事務
資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成...