Ответ
Файл миграции в 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")
}
}
Важные моменты:
- Версии должны быть последовательными
- SQL зависит от типа изменений (ALTER, CREATE, DROP и т.д.)
- Для сложных изменений может потребоваться несколько операций
- Миграция добавляется при создании БД через
addMigrations()