Sobes.tech
Junior — Middle

Czy Room zapewnia wbudowane wsparcie dla automatycznych aktualizacji bazy danych przy zmianach schematu?

sobes.tech AI

Odpowiedź od AI

Room nie zapewnia automatycznej migracji bazy danych przy zmianach schematu. Jeśli zmieniasz strukturę bazy (np. dodajesz lub usuwasz kolumny), musisz jawnie opisać migracje za pomocą obiektu Migration. Bez tego aplikacja podczas uruchamiania z nowym schematem i starą wersją bazy wywoła błąd.

Przykład migracji:

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

val db = Room.databaseBuilder(context, AppDatabase::class.java, "db-name")
    .addMigrations(MIGRATION_1_2)
    .build()

W związku z tym, programista jest odpowiedzialny za tworzenie i stosowanie migracji przy zmianach schematu.