DBトランザクション中にいくつかのチェックポイントを作成できますか?複数のコミットを持つLaravel DBトランザクション?
たとえば、トランザクションが開始されると、多くのクエリ、更新、削除などが発生します。何かがうまくいかない場合
DB::transaction(function() {
DB::table('users')->update(['votes' => 1]);
// something else here
DB::table('posts')->delete();
});
私の知る限り理解し、このような機能は自動的に成功し、ロールバックの場合は、すべてをコミットします。
しかし、それはエラーの場合には、すべてをロールバックしないようにすることができるだろう、例えば、
DB::table('users')->update(['votes' => 1]);
// something else here
DB::if_successful_so_far_do_not_rollback_previous_lines();
DB::table('posts')->delete();
のように任意の「小さな内側のコミット」が存在しますか?
2つのコミットで分割してください。 :) – manniL
私はできるだけ少数の接続を使用しようとしています – Coffee
まあ、私はそれが唯一の解決策だと思います。私はあなたがトランザクションを「部分的にロールバック」できるとは思わない。 – manniL