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)


根据sqlite外键文档 您需要:

  • 使用主键作为外键

    外键(value1fk)引用表A(\u id)

  • 使用唯一列作为外键

    如果不存在表,则创建表。\u A(\u id long主键,value1 long UNIQUE)


这是后期代码复制粘贴中的一个错误(已编辑)这是后期代码复制粘贴中的一个错误(已编辑)否,我要参考的字段是值1。确实,一个错误可能不是主键,但我正在使用“创建表如果不存在表A(_idlong,value1 long,primary key(_id,value1));”进行测试,并且有相同的错误否,我要引用的字段是value1。确实,一个错误可能不是主键,但我正在使用“创建表如果不存在表A(_idlong,value1 long,primary key(_id,value1));”进行测试,并且有相同的错误。问题是唯一的!谢谢你的回答!是的,问题是独一无二的!谢谢你的回答!