我有一個數據庫表叫Lesson
引進國外KEY約束「c_name」:
列:[LessonID, LessonNumber, Description]
...加上一些列表「t_name」可能會導致循環或多個級聯路徑
我有另一臺名爲Lesson_ScoreBasedSelection
:
列:[LessonID,NextLessonID_1,NextLessonID_2,NextLessonID_3]
當完成一個教訓,它LessonID在Lesson_ScoreBasedSelection
表得到擡頭三個可能的下一課,每個課都與特定範圍的分數相關聯。如果得分爲0-33,則將使用存儲在NextLessonID_1中的LessonID。如果得分爲34-66,則將使用存儲在NextLessonID_2中的LessonID,依此類推。
我想用外鍵引用Lesson_ScoreBasedSelection
表中的所有列,因爲外鍵引用課程表中的LessonID列,因爲Lesson_ScoreBasedSelection
表中的每個值都必須在Lesson表的LessonID列中有一個條目。我還希望打開級聯更新,以便在Lesson表中更改LessonID時,Lesson_ScoreBasedSelection
表中的所有引用都會更新。
這個特殊的級聯更新看起來像是一個非常簡單的單向更新,但是當我嘗試將外鍵約束應用於引用Lesson表中的LessonID字段的Lesson_ScoreBasedSelection
表中的每個字段時,出現錯誤:
引入表'Lesson_ScoreBasedSelection
'上的FOREIGN KEY約束'c_name'可能會導致循環或多個級聯路徑。
任何人都可以解釋爲什麼我得到這個錯誤,或者我怎麼能實現我描述的約束和級聯更新?
這是一個好主意。我也可以將字段合併到Lesson表中,因爲它本質上是一對一的關係,但我不想混亂Lesson表並使其更新查詢複雜化。它的設置原因很簡單,因爲它很容易在SQL Server Management Studio中查看和填充數據,因爲它類似於數據源自的電子表格。無論如何,你的解決方案可能是最好的解決方案,它可以使得每個課程明確指定分數和靈活。我想我沒有辦法解決SQL Server的侷限性。 – Triynko 2009-04-29 23:08:12