[Django 공식문서 번역] Models - 6. Database transactions
이 글은 본인이 공부를 목적으로 공식문서를 읽으며 정리/번역한 글로서 오역이 있을 수 있을 수 있습니다. 또한 본인이 이미 알고 있거나 불필요하다 느끼는 내용들은 누락될 수 있습니다.
Database Transactions
장고는 기본적으로 autocommit mode로 작동한다. 각각의 query는 trasaction이 active하지 않은 이상 바로바로 commit 된다.- Commit은 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어로써 트랜젝션의 처리과정을 데이터베이스에 영구적으로 저장한다.
- Rollback은 작업중 문제가 발생했을 때, 트랜젝션의 처리과정에서 발생한 변경사항을 취소하고 트랜젝션의 과정을 종료시킨다. 트랜젝션으로 인한 하나의 묶음처리가 시작되기 이전의 상태로 되돌린다.
Tying transactions to HTTP requests
일반적으로 transaction을 web에서 처리하는 방법은 각각의 request를 trascation으로 합치는 것이다. ATOMIC_REQUESTS를 True로 하면 이렇게 작동시킬 수 있다.장고는 view function를 호출하기전 transaction을 시작한다. 만약 문제없이 response가 나왔다면 장고는 transaction을 commit한다. 만약 view가 exception을 발생시기면 장고는 transaction을 rollback한다.
atomic() context manager를 사용하여 subtransaction들을 수행할 수 있지만 view가 끝날때 모든 변경사항들이 반영되거나 하나도 반영되지 않는다.
댓글
댓글 쓰기