bibi45

2020-08-26 | 后端 中文

Django transaction.atomic:把一项业务写入作为整体

bibi45

订单、库存和关联记录等多表写入需要明确的事务边界。

当一个业务操作涉及多条写入时,使用 transaction.atomic():任何一步失败都回滚,而不是留下半完成数据。

with transaction.atomic():
    order = Order.objects.create(customer=request.user)
    OrderItem.objects.create(order=order, sku=sku, quantity=quantity)

事务应尽量短,不要在其中等待外部 HTTP 调用、发送邮件或处理大文件。外部副作用可在成功提交后通过任务队列执行。

© 2026 bibi45. 保留所有权利。

静态网站,内容由 Git 管理。