
Micka
Fortgeschrittenes Mitglied
- 1
Hy, meine App ist nun nach langer Zeit fertg und läuft auch. Allerdings gibt es dort ein kleines Schönheitsproblem.
zunächst einmal mein Tabellenaufbau:
Aus MySQL und OracleSQL kenne ich es so wenn ich nun eine Liste Lösche werden alle Einträge mit der ListID automatisch auch gelöscht weils ja ein Fremdschlüssel ist.
Beim löschen von Listen gehe ich daher wie folgt vor:
Um das zu testen hab ich direkt nach dem löschen mal eine Select Abfrage gemacht und siehe da es bleibt immer ein einzelner Eintrag über. Also wenn eine Liste mit 10 Einträgen gelöscht wird bleibt ein Eintrag über, die Liste wird aber in der Tabelle gestrichen.
Meines Wissens nach darf das garnicht sein, weil bei Fremdschlüsseln ja immer ein Eintrag in der referenzierten Tabelle existieren muss oder?
zunächst einmal mein Tabellenaufbau:
Code:
Log.i("HaushaltsbuchDataManager","onCreate");
db.execSQL("CREATE TABLE " + EINTRAEGE_TABLE_NAME + " ("
+ _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ DAY +" INTEGER, "
+ MONTH + " INTEGER, "
+ YEAR + " INTEGER, "
+ CATEGORY + " TEXT NOT NULL, "
+ AMOUNT + " INTEGER, "
+ LISTID + " INTEGER, "
+ "FOREIGN KEY(" + LISTID + ") REFERENCES " + LISTEN_TABLE_NAME + "(" + _ID+ "));"
);
db.execSQL("CREATE TABLE " + LISTEN_TABLE_NAME + " ("
+ _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ LISTENNAME +" TEXT NOT NULL, "
+ LISTENTYP + " TEXT NOT NULL);"
);
Beim löschen von Listen gehe ich daher wie folgt vor:
Code:
public void deleteListe(long listid)
{
Log.i("HaushaltsbuchDataManager","deleteListe");
SQLiteDatabase db = this.getWritableDatabase();
try
{
db.execSQL("DELETE FROM " + LISTEN_TABLE_NAME + " WHERE "+ Constants._ID + " = '" + listid + "';");
Log.i("HaushaltsbuchDataManager","Die Liste mit der ID " + listid + " wurde gelöscht.");
}catch(Exception esql)
{
Log.i("HaushaltsbuchDataManager","Fehler beim löschen der Liste: " + esql.toString());
}
db.close();
}
Meines Wissens nach darf das garnicht sein, weil bei Fremdschlüsseln ja immer ein Eintrag in der referenzierten Tabelle existieren muss oder?