# Faking Migrations and Rollbacks

You can also fake run a migration using the `--fake` flag (`-f` for short). This will add the migration to the migrations table without running it. This is useful for migrations created after manual changes have already been made to the database or when migrations have been run externally (e.g. by another tool or application), and you still would like to keep a consistent migration history.

```
typeorm migration:run -d path-to-datasource-config --fake
```

This is also possible with rollbacks.

```
typeorm migration:revert -d path-to-datasource-config --fake
```

### Transaction modes[​](#transaction-modes "Direct link to Transaction modes")

By default, TypeORM will run all your migrations within a single wrapping transaction. This corresponds to the `--transaction all` flag. If you require more fine grained transaction control, you can use the `--transaction each` flag to wrap every migration individually, or the `--transaction none` flag to opt out of wrapping the migrations in transactions altogether.

In addition to these flags, you can also override the transaction behavior on a per-migration basis by setting the `transaction` property on the `MigrationInterface` to `true` or `false`. This only works in the `each` or `none` transaction mode.

```
import { MigrationInterface, QueryRunner } from "typeorm"



export class AddIndexTIMESTAMP implements MigrationInterface {

    transaction = false



    async up(queryRunner: QueryRunner): Promise<void> {

        await queryRunner.query(

            `CREATE INDEX CONCURRENTLY post_names_idx ON post(name)`,

        )

    }



    async down(queryRunner: QueryRunner): Promise<void> {

        await queryRunner.query(`DROP INDEX CONCURRENTLY post_names_idx`)

    }

}
```
