我已经阅读了 Django 事务并将在我的项目中使用它,但这里有几个我想知道的问题。实际上我希望在注册时使用事务,我在注册时在 2-3 个地方插入,所以我希望如果任何查询失败,则不应该执行插入。所以根据 Django 文档,我想我需要使用commit_on_success
事务类型。
但我想知道这些事务是依赖于数据库还是都是 Django 内部的?我是否需要为它更改数据库存储引擎?如果我必须在不同的存储引擎甚至未来不同的数据库上使用它,比如 SQL 中的一个表和 nosql 中的一个表,该怎么办?还是这无关紧要?
另外,如果我会像这样使用它:
from django.db import transaction
def function1():
#code here without transaction
@commit_on_success
def function2():
#code here with transaction
如果所有方法代码都成功,那么函数 2 将与提交一起工作,但是在导入事务之前,函数 1 会发生什么?function1 将应用什么类型的事务?我希望 function1 没有任何事务,但在其他模型代码中工作时表现正常,那么我该怎么办?
所以我的问题是,如果没有交易但有一种交易方法,该怎么办?它会通过使用装饰器和其他方法正常工作还是我需要做其他事情?这些事务是否也依赖于数据库和数据库存储引擎,如 InnoDB 这些事务只是 Django 内部事务?