Sobes.tech
Junior — Middle

Παρέχει το Room ενσωματωμένη υποστήριξη για αυτόματες ενημερώσεις της βάσης δεδομένων κατά τις αλλαγές στο σχήμα;

sobes.tech AI

Απάντηση από AI

Το Room δεν παρέχει αυτόματη μετανάστευση βάσης δεδομένων κατά τις αλλαγές στο σχήμα. Εάν αλλάζετε τη δομή της βάσης (π.χ. προσθέτοντας ή αφαιρώντας στήλες), πρέπει να περιγράψετε ρητά τις μεταναστεύσεις χρησιμοποιώντας το αντικείμενο Migration. Χωρίς αυτό, η εφαρμογή θα εμφανίσει σφάλμα κατά την εκκίνηση με νέο σχήμα και παλαιότερη έκδοση βάσης.

Παράδειγμα μετανάστευσης:

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

Έτσι, ο προγραμματιστής είναι υπεύθυνος για τη δημιουργία και εφαρμογή μεταναστεύσεων κατά την αλλαγή του σχήματος.