2011-08-28 3 views
4

SQLite 데이터베이스로 작업하고 있습니다. 외래 키로 다른 두 테이블의 기본 키를 포함하는 테이블이 있습니다. 그 중 하나를 삭제하고 싶습니다.우리는 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); 
} 
관련 문제