2011-08-28 215 views
4

我與SQLite數據庫工作。我有一個表,其中包含2個其他表的主鍵作爲外鍵;我想刪除其中的一個。下面是表的代碼:如何刪除sqlite中的外鍵?

protected static final String Item_places=(" CREATE TABLE " 
    + Item_place + "(" 
    + place_id + " INTEGER ," 
    + Item_id + " INTEGER ," 
    + "FOREIGN KEY("+place_id+ ") REFERENCES " + PlaceTable + "("+ PlaceID+ ") ON DELETE CASCADE" 
    + "FOREIGN KEY("+Item_id+ ") REFERENCES "+ contentTable+ "("+contentID+"));"); 

回答

6

這是一個老問題,但它是最好的,以提供更新的答案。

由於API 16(阿卡的Android 4.1),這是可能的,以打開使用SQLiteDatabase#setForeignKeyConstraintsEnabled(boolean enabled)的FK約束。

由於per the docs

設置是否外鍵約束爲數據庫啓用。

默認情況下,外鍵約束不是由數據庫執行。 此方法允許應用程序,以使外鍵約束。 它必須每次打開數據庫,以確保 外鍵約束的會話啓動時被調用。

爲了使這項工作,您的自定義裏面SQLiteOpenHelper使用下面的代碼:

@Override 
public void onConfigure(SQLiteDatabase db) { 
    // Enable FK constraints. 
    db.setForeignKeyConstraintsEnabled(true); 
    super.onConfigure(db); 
}