Ich habe folgende Datenbank in Android:Foreign Key Mismatch in Android ersetzen verursacht
Table A: [_id, value1]
Table B: [_id, fk_tablea, value2]
Mit Code:
db.execSQL("CREATE TABLE IF NOT EXISTS table_A ("
+ "_id long primary key , value1 long );");
db.execSQL("CREATE TABLE IF NOT EXISTS table_B ("
+ "_id long primary key ,fk_tablea long , value2 long,"
+ "FOREIGN KEY (fk_tablea) REFERENCES table_A (value1) ON DELETE CASCADE);");
Und wenn ich machen (mit dem Tisch leer):
ContentValues values= new ContentValues();
values.put("_id",1);
values.put("value1",900);
mDb.replace("table_A", null, values);
oder
mDb.execSQL("INSERT OR REPLACE INTO table_A(_id,value1) VALUES (1,900)");
von
mDb.insertWithOnConflict("table_A", null, values, SQLiteDatabase.CONFLICT_REPLACE);
Es stürzt mit einer Ausnahme Verursacht durch: android.database.sqlite.SQLiteException: Fremdschlüsselkonflikt:, beim Kompilieren: INSERT INTO OR REPLACE TABLE_A (_id, Wert1) VALUES (2900) . Aber wenn statt ersetzen verwende ich den Einsatz
ContentValues values= new ContentValues();
values.put("_id",1);
values.put("value1",900);
mDb.insert("table_A", null, values);
Funktioniert richtig, warum ist das passiert? und wie kann ich es lösen? Vielen Dank im Voraus
siehe [ähnliche Frage] (http://stackoverflow.com/questions/5208245/what-is-causing -Foreign-Key-Mismatch-Fehler – Shehzad