[英]Which gets deleted first? Primary or Foreign key?
當我們刪除作為其他表中的外鍵的主鍵時,哪個首先被刪除? 第一個表中的主鍵還是另一個表中的外鍵? 面試中有人問我這個問題。 請也提供一些答案的原因:)
通常,您需要先刪除外鍵引用,然后再刪除主鍵。 否則,外鍵約束將無效。
我可能會猜測這是面試官正在尋找的答案。
但是,實際上,答案是“同時”。 完成此操作的通常方法是使用級聯刪除外鍵引用。 刪除操作將全部在同一事務中進行(至少在大多數數據庫中),因此它們直到提交才生效。
如果您手動執行此操作,則通常會執行以下操作:
NULL
)。 直到FK記錄消失,才能刪除PK記錄。 這是具有這種關系的確切定義的一部分,也是具有FK關系的主要原因之一。 原因是您不想擁有不再具有父級的孤立子記錄,因此沒有任何意義。 這是數據完整性問題。
如果您嘗試刪除PK而沒有先刪除子記錄,則數據庫將給出錯誤。 級聯刪除可以通過先在后台刪除它們來隱藏它,但這在很多時候是很不好的事情,應該避免。 您不想隨意刪除子記錄,在許多情況下,子記錄的存在告訴您不應刪除父記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.