1. 程式人生 > >外來鍵必須是另一個表的主鍵嗎

外來鍵必須是另一個表的主鍵嗎

儘管 FOREIGN KEY 約束的主要目的是控制可以儲存在外來鍵表中的資料,但它還可以控制對主鍵表中資料的更改。例如,如果在 Sales.SalesPerson表中刪除一個銷售人員行,而這個銷售人員的 ID 由 Sales.SalesOrderHeader 表中的銷售訂單使用,則這兩個表之間關聯的完整性將被破壞;SalesOrderHeader 表中刪除的銷售人員的銷售訂單因為與 SalesPerson 表中的資料沒有連結而變得孤立了。

FOREIGN KEY 約束防止這種情況的發生。如果主鍵表中資料的更改使之與外來鍵表中資料的連結失效,則這種更改將無法實現,從而確保了引用完整性。如果試圖刪除主鍵表中的行或更改主鍵值,而該主鍵值與另一個表的 FOREIGN KEY 約束中的值相對應,則該操作將失敗。若要成功更改或刪除 FOREIGN KEY 約束的行,必須先在外來鍵表中刪除或更改外來鍵資料,這將把外來鍵連結到不同的主鍵資料上去。