Foreign key constraints in Android using SQLite? on Delete cascade
Foreign key constraints with on delete cascade are supported, but you need to enable them.
I just added the following to my SQLOpenHelper, which seems to do the trick.
@Overridepublic void onOpen(SQLiteDatabase db) { super.onOpen(db); if (!db.isReadOnly()) { // Enable foreign key constraints db.execSQL("PRAGMA foreign_keys=ON;"); }}
I declared my referencing column as follows.
mailbox_id INTEGER REFERENCES mailboxes ON DELETE CASCADE
Since Android 4.1 (API 16) SQLiteDatabase supports:
public void setForeignKeyConstraintsEnabled (boolean enable)
As the post from e.shishkin says from API 16 up you should enable foreign key constraints in the SqLiteOpenHelper.onConfigure(SqLiteDatabase)
method using the db.setForeignKeyConstraintsEnabled(boolean)
@Overridepublic void onConfigure(SQLiteDatabase db){ db.setForeignKeyConstraintsEnabled(true);}