エラー時の mongodb トランザクションのロールバックを省略することは良い習慣ですか?

WBOY
リリース: 2024-02-06 10:12:08
転載
454 人が閲覧しました

在发生错误时省略 mongodb 事务回滚是一个好习惯吗

質問内容

golang driverを使用していますgo.mongodb.org/mongo-driver/mongomongodbトランザクションを学習しています。私はこれに従っているので、githubにあるこの回答とこの例を参照してください。

@simagix が提供するサンプルコード:

リーリー

どちらの例でも、エラーが発生してもロールバックされません。これがデモサンプルであることは承知しています。しかし、コードで同じことを行うと、正常に動作します。

エラー発生時のロールバックを省略することはできますか(ドライバーが処理しますか)?それとも何かが足りないのでしょうか?


正解


##mongo.withsession() アクティブなトランザクションを想定していません。「のみ」役立ちます。指定されたセッションのコールバックを実行します。したがって、開始されたトランザクションの一部として実行したい場合は、コミットを処理して自分で中止する必要があります。これにより、より細かい制御が可能になります。

ただし、コールバックをトランザクションとして実行する場合は、

session.withtransaction() を使用してください。これは、トランザクションとそのライフサイクルを透過的な方法で処理するためです。これにより、トランザクションが作成されます。コールバックによって返されたエラーに基づいて、送信または中止します。追加機能として、再試行も処理できます。ドキュメントでも次のように指摘されています:

コールバックが失敗した場合、ドライバーは aborttransaction を呼び出します。

これは、トランザクション内でコールバックを正しく実行する方法の簡単な例です:

リーリー

以上がエラー時の mongodb トランザクションのロールバックを省略することは良い習慣ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!