我正在使用SQLite数据库.我有一个表,其中包含2个其他表的主键作为外键; 我想删除其中一个.这是表的代码:
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+"));");
Run Code Online (Sandbox Code Playgroud)
这是一个老问题,但最好提供更新的答案.
从API 16(Aka Android 4.1)开始,可以使用启用FK约束SQLiteDatabase#setForeignKeyConstraintsEnabled(boolean enabled).
根据文档:
设置是否为数据库启用外键约束.
默认情况下,数据库不强制执行外键约束. 此方法允许应用程序启用外键约束.每次打开数据库时都必须调用它,以确保为会话启用了外键约束.
要使其工作,请在自定义内部SQLiteOpenHelper使用以下代码:
@Override
public void onConfigure(SQLiteDatabase db) {
// Enable FK constraints.
db.setForeignKeyConstraintsEnabled(true);
super.onConfigure(db);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6062 次 |
| 最近记录: |