Sobes.tech
Junior — Middle

Poskytuje Room vstavanú podporu pre automatické aktualizácie databázy pri zmenách schémy?

sobes.tech AI

Odpoveď od AI

Room nezabezpečuje automatickú migráciu databázy pri zmenách schémy. Ak meníte štruktúru databázy (napríklad pridávaním alebo odstraňovaním stĺpcov), musíte explicitne popísať migrácie pomocou objektu Migration. Bez toho pri spustení s novou schémou a starou verziou databázy dôjde k chybe.

Príklad migrácie:

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

Týmto spôsobom je zodpovednosťou vývojára vytvoriť a aplikovať migrácie pri zmene schémy.