Sobes.tech
Junior — Middle

Room fornisce il supporto integrato per gli aggiornamenti automatici del database in caso di modifiche allo schema?

sobes.tech AI

Risposta dell'AI

Room non fornisce una migrazione automatica del database quando ci sono modifiche allo schema. Se modifichi la struttura del database (ad esempio, aggiungendo o rimuovendo colonne), devi descrivere esplicitamente le migrazioni usando l'oggetto Migration. Senza questo, l'app genererà un errore all'avvio con uno schema nuovo e una vecchia versione del database.

Esempio di migrazione:

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()

Pertanto, lo sviluppatore è responsabile della creazione e applicazione delle migrazioni quando si modifica lo schema.