【问题标题】:SQLite Foreign keys not working correctlySQLite 外键无法正常工作
【发布时间】:2014-05-20 18:13:22
【问题描述】:

以下是创建表的查询:

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 不会给出错误,但还是会添加它。

这是一个快照:

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

【问题讨论】:

  • 您是否启用了带有PRAGMA foreign_keys=on; 的外键?
  • 不,我没有,它是如何工作的?如何打开外键??

标签: sqlite foreign-keys sqlitemanager


【解决方案1】:

documentation 说:

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

sqlite> PRAGMA foreign_keys = ON;

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

【讨论】:

    【解决方案2】:
    @Override
    public void onConfigure(SQLiteDatabase db) {
        super.onConfigure(db);
        db.setForeignKeyConstraintsEnabled(true);
    }
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
    猜你喜欢
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多