SQLite FOREIGN KEY约束不起作用

时间:2014-11-07 11:53:33

标签: android sqlite

我有一张桌子

CREATE TABLE top_items ( 
    _id INTEGER PRIMARY KEY
                NOT NULL,
                FOREIGN KEY(_id) REFERENCES items ( _id )
);

当我尝试在insert对象上执行SQLiteDatabase时,items表中不存在的ID成功完成。

 SQLiteDatabase db = new DbOpenHelper(mContext).getWritableDatabase();
 long rowId = db.insert(Contract.TopItems.TABLE_NAME, null, makeTopItemValues(1001));
 assertTrue(rowId == -1);

我希望它因FOREIGN KEY(_id)约束而失败。

我错过了什么?

P.S。当我在非Android环境中启动时,插入查询失败。

1 个答案:

答案 0 :(得分:0)

您需要使用

启用外键约束检查
PRAGMA foreign_keys=ON;

使用execSQL()执行编译指示。