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.