一、問題
當我們已經成功創建了一個觸發器,觸發器是功能是:如果在學生表中修改了學號,則自動修改成績表中的學號。
但是檢驗時,修改學生表的學號卻遇到如下報錯:
消息 547,級別 16,狀態 0,第 71 行
UPDATE 語句與 REFERENCE 約束"FK_Score_Student"衝突。該衝突發生於數據庫"ScoreDB",表"dbo.Score", column ‘studentNo’。
語句已終止。
二、分析原因
通過報錯提示,我們可以知道參照約束有問題,
問題是發生在ScoreDB數據庫下的Score表studentNo列。
如圖:
點擊該外鍵約束,發現更新規則和刪除規則默認沒有調整。所以當原來Student表的主鍵studentNo發生修改時,外鍵約束到的Score表是拒絕修改的。
三、解決辦法
把該外鍵約束的更新規則和刪除規則改爲級聯,就可以了。