W aplikacji miałam problem z kaskadowym usuwaniem rekordów z tabelek. Podczas usuwania posiłków z bazy, w tabelkach z zaplanowanymi obiadami wisiały stare wpisy. To powodowało, że kiedy dodawałam kolejne posiłki to od razu pojawiały się one na liście obiadów. Trzeba było to naprawić.
Okazało się, że domyślnie SQLite nie obsługuje kluczy obcych… cóż, na szczęście można to zmienić za pomocą jednej instrukcji sql. Na nieszczęście trzeba ją wysyłać przy każdym otwarciu bazy danych…
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Override | |
public void onOpen(SQLiteDatabase db) { | |
super.onOpen(db); | |
db.execSQL("PRAGMA foreign_keys=ON"); | |
} |
Więcej o użyciu PRAGMA tutaj. Według tej strony podejście do kluczy obcych może się zmienić w przyszłych wersjach SQLite’a. Oby 🙂