2

以下是创建表的查询:

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_UserIdSQLite 不会给出错误,但无论如何都会添加它。

这是一个快照:

在此处输入图像描述

任何提示这里发生了什么?我正在使用 SQLite 管理器,它是 Mozilla Firefox 的附加组件

4

2 回答 2

8

文档说:

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

sqlite> PRAGMA foreign_keys = ON;

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

于 2014-05-20T19:12:18.567 回答
2
@Override
public void onConfigure(SQLiteDatabase db) {
    super.onConfigure(db);
    db.setForeignKeyConstraintsEnabled(true);
}
于 2017-03-22T13:28:08.143 回答