Вложенные транзакции Django - "with transaction.atomic()"
Я хотел бы знать, есть ли у меня что-то вроде этого:
def functionA():
with transaction.atomic():
#save something
functionB()
def functionB():
with transaction.atomic():
#save another thing
Кто-то знает, что произойдет? Если функция B не работает, функция A также откатится назад?
Спасибо!
Ответы
Ответ 1
Да, если исключение произойдет в любой из функций, они оба будут отброшены назад. Из документы:
atomic
блоки могут быть вложенными. В этом случае, когда внутренний блок успешно завершен, его эффекты все равно могут быть отброшены, если во внешнем блоке будет добавлено исключение в более поздней точке.