私がこのようなものを持っているかどうかを知りたいです:
def functionA():
with transaction.atomic():
#save something
functionB()
def functionB():
with transaction.atomic():
#save another thing
誰かが何が起こるか知っていますか? functionBが失敗した場合、functionAもロールバックしますか?
ありがとうございました!
はい、そうです。ネストに関係なく、アトミックブロックが例外によって終了した場合 ロールバックされます :
コードのブロックが正常に完了すると、変更がデータベースにコミットされます。例外がある場合、変更はロールバックされます。
また、外側のブロックで例外が発生すると、内側のブロックがロールバックされ、内側のブロックで例外がキャッチされて、外側のブロックがロールバックされないようにすることもできます。ドキュメントはこれらの問題に対処します。 (または、ネストされたトランザクションに関するより包括的なフォローアップ質問については ここ を参照してください)。