diff --git a/PlainSql.Migrations/Migrator.cs b/PlainSql.Migrations/Migrator.cs index 34cf615..4807756 100644 --- a/PlainSql.Migrations/Migrator.cs +++ b/PlainSql.Migrations/Migrator.cs @@ -31,7 +31,7 @@ public static void ExecuteMigrations(this IDbConnection connection, IEnumerable< public static void ExecuteMigrations(this IDbConnection connection, IEnumerable migrationScripts, MigrationOptions options) { - using (var transaction = connection.BeginTransaction()) + using (var transaction = connection.BeginTransaction(IsolationLevel.Serializable)) { var containsMigrationTable = false; diff --git a/README.md b/README.md index 3f1be9f..6082813 100644 --- a/README.md +++ b/README.md @@ -42,3 +42,9 @@ private void ExecuteMigrations(string connectionString, string environment) * SQLite * MS SQL * PostgreSQL + +## Concurrency + +Migrations are executed in a single transaction with isolation level "Serializable". This usually +means that executing migrations is concurrency-safe. For details on which SQL statements are supported +by this transaction level, please refer to the documentation of your database technology.