Java Android Sqlite和外键失败
我正在安卓系统中测试外键,我有一些不明白的问题: 创建表的步骤(使用硬编码值) 然后我执行:Java Android Sqlite和外键失败,java,android,sqlite,Java,Android,Sqlite,我正在安卓系统中测试外键,我有一些不明白的问题: 创建表的步骤(使用硬编码值) 然后我执行: ContentValues values = new ContentValues(); values.put("_id", 1); values.put("value1", 200); long result = mDb.insert("table_A", null, values); Log.e("","done (" + result + ")");
ContentValues values = new ContentValues();
values.put("_id", 1);
values.put("value1", 200);
long result = mDb.insert("table_A", null, values);
Log.e("","done (" + result + ")");
values = new ContentValues();
values.put("_id", 1);
values.put("value1fk", 200);
values.put("value2", 10);
result= mDb.insert("table_B", null, values);
Log.e("","done (" + result + ")");
输出是
done(1)
done(-1)
为第二次插入指定外键不匹配
E/SQLiteDatabase(25476): Error inserting _id=1 value1fk=200 value2=10
E/SQLiteDatabase(25476): android.database.sqlite.SQLiteException: foreign key mismatch: , while compiling: INSERT INTO table_B(_id,value1fk,value2) VALUES (?,?,?)
为什么会发生这种情况?表A中的
值\u 1
字段不是主键。难道不是吗
FOREIGN KEY (value1fk) REFERENCES table_A (_id)...
相反?表A中的
值\u 1
字段不是主键。难道不是吗
FOREIGN KEY (value1fk) REFERENCES table_A (_id)...
相反?根据sqlite外键文档 您需要:
- 使用主键作为外键 外键(value1fk)引用表A(\u id)
- 使用唯一列作为外键 如果不存在表,则创建表。\u A(\u id long主键,value1 long UNIQUE)
- 使用主键作为外键 外键(value1fk)引用表A(\u id)
- 使用唯一列作为外键 如果不存在表,则创建表。\u A(\u id long主键,value1 long UNIQUE)