【问题标题】:Android sqlite foreign key error check not working?Android sqlite外键错误检查不起作用?
【发布时间】:2020-08-14 14:12:01
【问题描述】:

我有 2 个表用户和计算机

用户 = (id, name, age)

id -> 主键

计算机 = (comp_id, comp_model_name, user_id)

comp_id -> 主键

user_id -> 用户表 user_id 字段的外键。 因为我想让一台电脑供一个人使用。

if (db != null) {
        if (!db.isReadOnly) {
            db.execSQL("PRAGMA foreign_keys=ON;");
        }
    }

db?.execSQL(
    "create table Users " +
            "(id integer primary key, name text, age integer)"
)


db?.execSQL(
    "create table Computers " +
            "(id integer primary key, model_name text, user_id integer," +
            " FOREIGN KEY (user_id) references Users (id))")

我看到的问题是,如果我为计算机对象的第三个字段指定一个不在用户表 id 字段中的值,它不会引发错误。它正在接受值。

【问题讨论】:

    标签: android sqlite kotlin android-sqlite


    【解决方案1】:

    要启用外键约束支持,您必须在 SQLiteOpenHelper 类中覆盖 onConfigure() 并调用 setForeignKeyConstraintsEnabled(true)

    override fun onConfigure(db: SQLiteDatabase) {
        db.setForeignKeyConstraintsEnabled(true)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-28
      • 2018-01-02
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多