Foreign-Key

刪除/更新外鍵約束中 SET NULL 的目的是什麼?

  • September 22, 2011

我可能心胸狹隘,但如果我創建了外鍵約束並且一行被更新或刪除,如果子表的列設置為 NULL,我將失去該連接。

故意保留這些孤立行的目的是什麼?

是否set null有用取決於您在特定上下文中選擇的含義 - 圍繞IMO 的null所有混淆和意見,明智的方法是讓 DBAnull

  1. 選擇(並記錄)每個可空欄位的含義
  2. 確保它只意味著件事

使用這些規則,請考慮以下案例:

  • 您有一個表“商店”(例如個別場所)
  • 您有一個表“零售商”(例如連鎖店)
  • ‘shop’ 表有一個查找欄位,引用 ‘retailer’ 的鍵
  • 您已定義null代表一家獨立商店(即不屬於連鎖店的商店)
  • 一個“零售商”關閉分店,以至於你認為它的商店是獨立的

在這種情況下,anon delete set null是有道理的。還有其他建模這些業務規則的方法,但這是最簡單的,如果它準確地符合您在現實世界中關心的事實,我建議它完全可以

引用自:https://dba.stackexchange.com/questions/5176