I have a proble with a SqliteConstraintException.
My db is like that
private static final String CREATE_TABLE_1 =
"create table table_1 (uid integer primary key autoincrement, "
+ table_1.c1 + " TEXT,"
+ table_1.c2 + " integer,"
+ table_1.c3 + " TEXT,"
+ table_1.c4 + " TEXT,"
+ table_1.c5 + " integer);";
private static final String CREATE_TABLE_2 =
"create table table_2 (uid integer primary key autoincrement, "
+ table_2.c1 + " TEXT,"
+ table_2.c2 + " integer,"
+ table_2.c3 + " TEXT);";
private static final String CREATE_TABLE_3 =
"create table table_3 (uid integer primary key autoincrement, "
+ "uid_table_1 integer, "
+ "uid_table_2 integer, "
+ "FOREIGN KEY(uid_table_1) REFERENCES table_1(uid) ON DELETE CASCADE, "
+ "FOREIGN KEY(uid_table_2) REFERENCES table_2(uid) ON DELETE CASCADE);";
private static final String CREATE_TABLE_4 =
"create table table_4 (uid integer primary key autoincrement, "
+ "uid_table_2 integer,"
+ "FOREIGN KEY(uid_table_2) REFERENCES table_2(uid) ON DELETE CASCADE);";
And i use in my SQLiteOpenHelper to enable foreign key constraints
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
if (!db.isReadOnly()) {
// Enable foreign key constraints
db.execSQL("PRAGMA foreign_keys=ON;");
}
But when i want to delete on row of the table_2, i get SqliteConstraintException.
Can you help me please ?
Thank you
I looks like most of your tables reference each other. if you want to delete a row in Table 2 that is used as the foreign key in a different table, you need to delete the records that reference it. so delete records from tables 3 and 4 that have a foreign key reference to the row you are trying to delete in 2 and THEN call delete for that row.