django의 transaction 메서드에 대해 학습한다.
def atomic_test(request):
transaction.set_autocommit(False)
Post.objects.filter(pk=1).update(read_count=150)
transaction.rollback()
Post.objects.filter(pk=1).update(read_count=200)
transaction.commit()
두 함수는 수동으로 커밋이나 롤백을 하는 함수인데, 기본적으로 django는 autocommit
이다.
따라서, 해당 함수를 사용하려면 transaction.set_autocommit(False)
로 자동 커밋 옵션을 종료하고 사용해야하며, atomic
블록 내에선 사용할 수 없다.
트랜잭션이 commit이 완료되고나서 함수를 실행시켜주는 함수이다.
트랜잭션이 rollback 된다면 실행되지 않는다.