我知道這是一個奇怪的問題,因爲我總是被教導使用外鍵約束。但是,我遇到過一種情況,即在刪除引用時必須保留外鍵引用值用於歷史目的。外鍵總是需要約束嗎?
這是一個任務管理系統,任務發生引用包含重複規則的父任務。這個父任務可以被刪除,但事件本身必須保持與不存在的父母標識一致。如果找不到父任務,則系統僅返回一個錯誤 - 例如「父任務不再存在」。父級id不能在級聯中設置爲null的原因是因爲它在事件的其他地方用作識別密鑰。
另一個示例:關於從播放列表中刪除的YouTube視頻怎麼樣。類似的情況對嗎?它在播放列表中被引用,但視頻不存在,因此它會在播放列表中返回錯誤。
難道我根本就沒有定義外鍵,只是簡單地將parent_id引用列創建爲普通列?我只想確定當遇到一個表引用另一個表的情況時通常如何處理,但前者不受後者存在的約束。
從技術上講,ON DELETE SET NULL原因將爲您處理。如果你的問題是理論上的話,那麼:是的,你可以:) – Koshinae