问题描述
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))")
我看到的问题是,如果为计算机对象的第三个字段指定了不在Users表ID字段中的值,则不会引发错误。它正在接受值。
解决方法
要启用外键约束支持,您必须在SQLiteOpenHelper
类中覆盖onConfigure()
并调用setForeignKeyConstraintsEnabled(true)
:
override fun onConfigure(db: SQLiteDatabase) {
db.setForeignKeyConstraintsEnabled(true)
}