我对房间和使用外键有疑问。 我想将多个外键添加到表中或将外键设置为null,但我不能。每次当我尝试将对象插入数据库时,都会收到android.database.sqlite.SQLiteConstraintException:FOREIGN KEY约束失败(代码787)。
我发现父对象不存在,这就是发生异常的原因。 但是有时候我不需要父对象,并且“如果没有任务对象,可能会存在复杂的数据”。
或第二种情况。 如果我想添加另一个外键,并且每次其中一个为空,该怎么办?
是否可以将它们设置为可空值并避免出现此异常?
@Entity(
tableName = "complex",
foreignKeys = [ForeignKey(entity = Task::class, parentColumns = ["id"], childColumns = ["task_id"], onDelete = CASCADE)],
indices = [Index(name = "complex_task_id_index", value = ["task_id"], unique = false)]
)
data class Complex(@PrimaryKey(autoGenerate = true) var id: Long?,
@ColumnInfo(name = "instance_id") var instanceId: Long?,
@ColumnInfo(name = "definition_id") var definitionId: Long,
@ColumnInfo(name = "task_id") var taskId: Long? = null)
@Test
fun updateComplexDefinitionTest() {
val complex = Complex(id = null, instanceId = null, definitionId = 1L, taskId = null)
complexDao.insert(complex)
}
当我尝试将对象插入数据库时发生错误