无法将外键设置为空,多个外键

时间:2019-07-08 11:59:53

标签: android kotlin android-room

我对房间和使用外键有疑问。 我想将多个外键添加到表中或将外键设置为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)

}

当我尝试将对象插入数据库时​​发生错误

0 个答案:

没有答案