簡體   English   中英

在外鍵上使用 ON DELETE CASCADE 選項

[英]Using the ON DELETE CASCADE option on a foreign key

在外鍵上使用ON DELETE CASCADE時,級聯選項是否僅適用於同一表中的條目?

考慮使用以下選項創建的表 Employee:

CONSTRAINT EMPSUPERFK FOREIGN KEY (Super_ssn) REFERENCES EMPLOYEE(Ssn) ON DELETE CASCADE ON UPDATE CASCADE,

在圖 5.6 所示的數據庫 state 上運行以下命令會發生什么? 刪除 Lname = 'Borg' 的員工

答案是,所有以 Borg 作為經理的員工都將被刪除,所有以 Borg 為經理的員工也將被刪除,等等(請注意,解決方案不是來自本書的作者,這就是我的原因在這里問)。

我以為包括該員工在內的所有內容也會被刪除,例如部門“總部”,因為他是經理等。對嗎?

在此處輸入圖像描述

您正在顯示一個自引用外鍵,它將員工的經理與代表經理的同一表中的相應記錄相關聯:這是一個層次結構。

當一個父級被刪除(這就是 Borg)時,所有的子級都會自動遞歸地刪除。 表中的所有員工都直接或間接地引用了 Borg,因此表中的所有記錄都將被刪除。

我認為包括該員工在內的所有內容也會被刪除,例如部門“總部”,因為他是經理,等等。什么是正確的?

問題中提供的信息並未暗示任何此類事情。 為此,通常應該在表中設置一個外鍵,以將列department與表employee中的列ssn關聯mgr_ssn ,並使用on delete cascade選項。 盡管它可能存在,但在所問的問題中沒有跡象表明它確實存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM