Transaction
Autocommit (default): Mỗi truy vấn được cam kết ngay lập tức với cơ sở dữ liệu, trừ khi một giao dịch đang hoạt động
atomic
@action(methods=['GET'], detail=False, url_path='test')
@transaction.atomic
def test(self, request, *args, **kwargs):
Book.objects.create(name=1)
try:
with transaction.atomic():
Book.objects.create(name=2)
print(1/0)
except:
pass
Book.objects.create(name=3)
return Response()
--> Đoạn code save thành công book1 và book3 trong database.
on_commit: Thực hiện một hành động liên quan đến giao dịch cơ sở dữ liệu hiện tại, nhưng chỉ khi giao dịch được thực hiện thành công
# celery task
transaction.on_commit(lambda: my_fav_task.delay(param1))
cursor = connection.cursor()
cursor.execute('SET TRANSACTION ISOLATION LEVEL SERIALIZABLE')
+ READ COMMITTED: read data đã commit
+ READ UNCOMMITTED: read data chưa commit
+ REPEATABLE READ: read data không thay đổi trong 1 transaction
+ SERIALIZABLE: lock read và write
Last updated