summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorCaio Ariede <caio.ariede@gmail.com>2020-10-19 09:45:04 -0300
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-10-29 08:00:06 +0100
commit9ca22c7733efeeb140b75585c6387ef2cb861d19 (patch)
tree06c38f9efa8cb6d0830340a02d7d46ef791f5f5f /docs
parent302caa40e4caab7d95ef7d0a88a90f935039ab09 (diff)
Fixed #26962 -- Doc'd running migrations in transactions.
Diffstat (limited to 'docs')
-rw-r--r--docs/topics/migrations.txt21
1 files changed, 21 insertions, 0 deletions
diff --git a/docs/topics/migrations.txt b/docs/topics/migrations.txt
index b0d75a4f09..708040826f 100644
--- a/docs/topics/migrations.txt
+++ b/docs/topics/migrations.txt
@@ -169,6 +169,27 @@ migrations for you. If not, you'll have to go in and modify the migrations
yourself - don't worry, this isn't difficult, and is explained more in
:ref:`migration-files` below.
+Transactions
+============
+
+On databases that support DDL transactions (SQLite and PostgreSQL), all
+migration operations will run inside a single transaction by default. In
+contrast, if a database doesn't support DDL transactions (e.g. MySQL, Oracle)
+then all operations will run without a transaction.
+
+You can prevent a migration from running in a transaction by setting the
+``atomic`` attribute to ``False``. For example::
+
+ from django.db import migrations
+
+ class Migration(migrations.Migration):
+ atomic = False
+
+It's also possible to execute parts of the migration inside a transaction using
+:func:`~django.db.transaction.atomic()` or by passing ``atomic=True`` to
+:class:`~django.db.migrations.operations.RunPython`. See
+:ref:`non-atomic-migrations` for more details.
+
Dependencies
============