我正在使用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+"));");
答案 0 :(得分:5)
您需要ALTER TABLE DROP CONSTRAINT
命令SQLite doesn't support this,有关解决方法,请参阅How do I DROP a constraint from a sqlite (3.6.21) table?。
答案 1 :(得分:5)
这是一个老问题,但最好提供更新的答案。
自API 16(Aka 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);
}