如何解决Android sqlite外键错误检查不起作用?
我有2个表Users和Computers
用户=(id,名称,年龄)
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)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。