Android SDK ile gelen SQLite kütüphanesinde de aynı SQLite standart kütüphanesinde olduğu gibi foreign key desteğini varsayılan olarak kapalı bırakıyor. Ancak SQLite’a PRAGMA komutları göndererek bunu açmamız mümkün. Bu yazımda foreign key desteğinin nasıl açılabilineceğine değineceğim.

Uygulamada SQLiteOpenHelper sınıfını extend ettiğimiz sınıfta onOpen olayını override etmemiz gerekiyor. Bu şekilde database açılma olayında eğer yazma desteği etkin ise foreign key’i aktifleştireceğiz.

@Override
public void onOpen(SQLiteDatabase db) {
  super.onOpen(db);

  if (!db.isReadOnly()) {
    db.execSQL("PRAGMA foreign_keys=ON;");
  }
}

Android SDK level 16’da gelen setForeignKeyConstraintsEnabled metodu da aynı işlem için kullanılabilir. Bu durumda aşağıdaki gibi onConfigure olayını override ederek aynı işi yapabiliriz.

@Override
public void onConfigure(SQLiteDatabase db) {
  super.onConfigure(db);

  if (!db.isReadOnly()) {
    db.setForeignKeyConstraintsEnabled(true);
  }
}

Eğer Android SDK level 16 ile geliştiriyorsanız ikinci yöntemi kullanmak daha doğru. Bunun dışındaki durumlarda ilk yöntem ihtiyacımız olanı gerçekleştirecektir.