在外键上使用 ON DELETE CASCADE 选项

Using the ON DELETE CASCADE option on a foreign key

在外键上使用 ON DELETE CASCADE 时,级联选项是否仅适用于同一 table 中的条目?

Consider a table Employee created with the following option:

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

What happens when the following command is run on the database state shown in Figure 5.6? DELETE EMPLOYEE WHERE Lname = ‘Borg’

答案是,所有以博格为经理的员工都将被删除,所有以该员工为经理的员工也将被删除,等等(注意,解决方案不是来自本书的作者这就是我在这里问的原因)。

我以为包括这个员工在内的所有内容都会被删除,例如“总部”部门,因为他是经理等等。对吗?

您正在显示一个自引用外键,它将员工的经理与代表经理的 table 中的相应记录相关联:这是一个层次结构。

当父项被删除(Borg 就是这样)时,所有子项都会自动删除,递归地。 table 中的所有员工都直接或间接引用了 Borg,因此 table 中的所有记录将被删除。

I thought that everything that includes this employee would be deleted as well, for example, the department "Headquarters" as he is the manager, etc.. what's right?

问题中提供的信息并未暗示任何此类事情。为此,通常应该在 table department 中设置一个外键,以将列 mgr_ssn 与 table [=13= 中的列 ssn 相关联],使用 on delete cascade 选项。尽管它可能存在,但在提出的问题中没有迹象表明它确实存在。