Each migration should ideally run in a transaction, to avoid a situation of a migration being partially applied.