Lesson
私は:
列: ...と呼ばれるデータベーステーブルを持っています[LessonID, LessonNumber, Description]
...さらにいくつかの他の列
と呼ばれる別のテーブルがありますLesson_ScoreBasedSelection
:
列: [LessonID,NextLessonID_1,NextLessonID_2,NextLessonID_3]
レッスンが完了すると、そのレッスン ID がLesson_ScoreBasedSelection
テーブルで検索され、次の 3 つの可能なレッスンが取得されます。各レッスンは、特定の範囲のスコアに関連付けられています。スコアが 0 ~ 33 の場合、NextLessonID_1 に格納されている LessonID が使用されます。スコアが 34 ~ 66 の場合は、NextLessonID_2 に格納されている LessonID が使用されます。
テーブル内のすべての値が Lesson テーブルの LessonID 列にエントリを持っている必要があるLesson_ScoreBasedSelection
ため、lesson テーブルの LessonID 列を参照する外部キーを使用して、テーブル内のすべての列を制約したいと考えています。Lesson_ScoreBasedSelection
また、カスケード更新をオンにして、Lesson テーブルで LessonID が変更された場合に、テーブル内のすべての参照Lesson_ScoreBasedSelection
が更新されるようにします。
この特定のカスケード更新は非常に単純な一方向の更新のようにLesson_ScoreBasedSelection
見えますが、Lesson テーブルの LessonID フィールドを参照するテーブルの各フィールドに外部キー制約を適用しようとすると、次のエラーが発生します。
テーブル ' ' に FOREIGN KEY 制約 'c_name' を導入Lesson_ScoreBasedSelection
すると、サイクルまたは複数のカスケード パスが発生する可能性があります。
このエラーが発生する理由、または説明した制約とカスケード更新を実現する方法を誰かが説明できますか?