SQLite外键无法正常工作

时间:2014-05-20 18:13:23

标签: sqlite foreign-keys sqlitemanager

以下是创建表的查询:

CREATE TABLE "FacilityRating"(
    "FacilityRatingId" INTEGER PRIMARY KEY NOT NULL,
    "Stars" VARCHAR,
    "Facility_FacilityId" INTEGER,
    "User_UserId" INTEGER,
    FOREIGN KEY (Facility_FacilityId)
        REFERENCES Facility(FacilityId)
        ON DELETE CASCADE
        ON UPDATE CASCADE,
    FOREIGN KEY (User_UserId)
        REFERENCES User(UserId)
        ON DELETE CASCADE
        ON UPDATE CASCADE
)

但是,当我在Facility_FacilityIdUser_UserId中插入一个带有一些随机数的新行时,SQLite不会给出错误,但无论如何都要添加它。

这是一张快照:

enter image description here

任何暗示这里发生了什么?我正在使用SQLite Manager,一个Mozilla Firefox附加组件

2 个答案:

答案 0 :(得分:7)

documentation说:

  

应用程序必须在运行时使用PRAGMA foreign_keys命令启用外键约束。例如:

sqlite> PRAGMA foreign_keys = ON;
     

默认情况下禁用外键约束(为了向后兼容),因此必须为每个数据库连接单独启用。

答案 1 :(得分:1)

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