外鍵對數據更新的影響
阿新 • • 發佈:2018-10-20
spa 系統 正常的 目標表 opera dem 不存在 數據庫系統 成功
外鍵是指向另一個表中已有數據的約束,因此外鍵值必須是在目標表中存在的。如果更新後的數據在目標表中不存在的話則會導致違反外鍵約束異常。T_Debt 表中FPerson 字段是指向表T_Person的FName 字段的外鍵,如果我們執行下面SQL:
UPDATE T_Debt set FPerson = "Merry" WHERE FNumber="1"
由於在T_Person表中不存在FName字段等於“Merry”的數據行,所以會數據庫系統會報出類似如下的錯誤信息:
UPDATE 語句與FOREIGN KEY 約束"FKT_DebtFPerson__1A14E395"沖突。該沖突發生於數據庫"demo",表"dbo.T_Person", column "FName"。
而如果我們為FPerson字段設置已經在T_Person表中存在的FName字段值的話則會插入成功,執行下面的SQL:
UPDATE T_Debt set FPerson = "Lili" WHERE FNumber="1"
此句SQL則可以正常的執行成功。執行SELECT * FROM T_Debt來查看表中的數據:
可以看到數據已經被正確的更新到表中了。
外鍵對數據更新的影響