为什么会抛出SQL外键不匹配

时间:2017-02-04 10:16:18

标签: android database sqlite android-sqlite

美好的一天。我已经检查过有关同一主题的其他问题。但我似乎无法理解为什么我的应用程序抛出了外键错误。

在我的Patient表中,我将localUuid声明为我的主键。

@Column(isPrimaryKey = true, isUnique = true, isNotNullable = true)
@Expose
@SerializedName("local_uuid")
protected String localUuid;

在我的约会表中,我宣布patientUuid为外键

@NOrm.Column(isForeignKey = true, referenceTable = "Patient",   referenceColumn = "localUuid", isNotNullable = true)
@Expose
@SerializedName("patient_Uuid")
protected String patientUuid;

所以当我更新Column patientUuid

的值时会出现问题
db.execSQL("UPDATE Appointment SET clinicUuid = '289f0c31-a8e3-4906-8ab2-c39e2dad368e' 
WHERE localUuid ='a1584d2c-50df-46d6-86f7-6b753697116a'");
非常感谢和抱歉英语不好

1 个答案:

答案 0 :(得分:0)

根据您的描述并向我们展示,localUuid表中没有名为Appointment的列。但是,有一个名为patient_Uuid的列,引用 localUuid表中名为Patient的列。所以看起来你的更新应该是这样的:

db.execSQL("UPDATE Appointment SET clinicUuid = '289f0c31-a8e3-4906-8ab2-c39e2dad368e'
            WHERE patient_Uuid ='a1584d2c-50df-46d6-86f7-6b753697116a'");

我不确定为什么会出现外键不匹配错误,但如果您的原始查询没有指定任何外键,可能会导致该特定错误。