Как выглядит файл миграции БД

«Как выглядит файл миграции БД» — вопрос из категории Базы данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Файл миграции в Room состоит из класса, наследующего Migration, с указанием версий from и to. Внутри переопределяется метод migrate(), где выполняется SQL для изменения схемы БД. Пример:

val MIGRATION_1_2 = object : Migration(1, 2) {
    override fun migrate(database: SupportSQLiteDatabase) {
        database.execSQL("ALTER TABLE users ADD COLUMN last_login INTEGER NOT NULL DEFAULT 0")
    }
}

Важные моменты:

  1. Версии должны быть последовательными
  2. SQL зависит от типа изменений (ALTER, CREATE, DROP и т.д.)
  3. Для сложных изменений может потребоваться несколько операций
  4. Миграция добавляется при создании БД через addMigrations()