У меня есть таблица базы данных под названием Lesson
:
columns: [LessonID, LessonNumber, Description]
... плюс некоторые другие столбцы
У меня есть еще одна таблица с названием Lesson_ScoreBasedSelection
:
columns: [LessonID,NextLessonID_1,NextLessonID_2,NextLessonID_3]
Когда урок завершен, его LessonID ищется в таблице Lesson_ScoreBasedSelection
, чтобы получить три возможных следующих урока, каждый из которых связан с определенным диапазоном баллов. Если оценка была 0-33, будет использоваться LessonID, хранящийся в NextLessonID_1. Если оценка была 34-66, будет использоваться LessonID, хранящийся в NextLessonID_2, и так далее.
Я хочу ограничить все столбцы в таблице Lesson_ScoreBasedSelection
внешними ключами, ссылающимися на столбец LessonID в таблице уроков, поскольку каждое значение в таблице Lesson_ScoreBasedSelection
должно иметь запись в столбце LessonID таблицы Lesson. Я также хочу, чтобы были включены каскадные обновления, чтобы при изменении LessonID в таблице Lesson обновлялись все ссылки на него в таблице Lesson_ScoreBasedSelection
.
Это конкретное каскадное обновление кажется очень простым односторонним обновлением, но когда я пытаюсь применить ограничение внешнего ключа к каждому полю в таблице Lesson_ScoreBasedSelection
, ссылающейся на поле LessonID в таблице уроков, я получаю сообщение об ошибке:
Введение ограничения FOREIGN KEY 'c_name' в таблице 'Lesson_ScoreBasedSelection
' может вызвать циклы или несколько каскадных путей.
Может ли кто-нибудь объяснить, почему я получаю эту ошибку или как я могу достичь описанных мной ограничений и каскадного обновления?