【问题标题】:SQLite FOREIGN KEY constraint is not working [duplicate]SQLite FOREIGN KEY 约束不起作用[重复]
【发布时间】:2014-11-07 11:53:32
【问题描述】:

我有一张桌子

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

当我尝试在 SQLiteDatabase 对象上执行 insert 时,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) 约束而失败。

我错过了什么?

附:当我在非 android 环境中启动插入查询时,它会失败。

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    您需要启用外键约束检查

    PRAGMA foreign_keys=ON;
    

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

    【讨论】:

    • 是基于会话的查询还是永久的(可以在创建表时指定一次)?
    • 基于会话,如 CL 链接的欺骗中所述。
    猜你喜欢
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 2014-03-20
    • 2023-03-22
    • 2019-04-04
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多