Невозможно установить внешний ключ как ноль, несколько внешних ключей - PullRequest
0 голосов
/ 08 июля 2019

У меня вопрос о номере и использовании внешних ключей. Я хотел бы добавить более одного внешнего ключа в таблицу или установить внешний ключ как ноль, но я не могу. Каждый раз, когда я пытаюсь вставить объект в базу данных, я получаю исключение 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)

}

Ошибка возникает при попытке вставить объект в базу данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...