Foreign key constraints in Android using SQLite? on Delete cascade Foreign key constraints in Android using SQLite? on Delete cascade java java

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);}