我要進(jìn)行多庫操作時,事務(wù)是不是這樣的,會不會存第一個提交成功,第二個提交失敗,導(dǎo)致第一個不能滾回
Db::connection('api_log')->beginTransaction();
Db::connection('default')->beginTransaction();
try {
// 業(yè)務(wù)處理
Db::connection('api_log')->commit();
Db::connection('default')->commit();
} catch (\Throwable $exception) {
var_dump($exception);
Db::connection('api_log')->rollBack();
Db::connection('default')->rollBack();
}
這種多庫操作,就不要依賴事務(wù),可以在代碼層面判斷,比如庫1的事務(wù)1先提交入庫(標(biāo)記一個狀態(tài)字段,trans=1 表示還有其他庫的事務(wù)沒執(zhí)行完),如果庫2事務(wù)2也提交成功,則更新庫1的對應(yīng)字段trans=2 表示數(shù)據(jù)執(zhí)行完成每一次,如果庫2事務(wù)2執(zhí)行失敗,則不更新庫1的數(shù)據(jù),或者可以做刪除操作,表示失敗,大概邏輯是這樣,就是通過代碼層面判斷。