用于创建数据库的DDL就像这样
create table manager
(employee_name varchar(20) not null,
manager_name varchar(20) not null,
primary key (employee_name),
foreign key (manager_name) references manager on delete cascade);
如果经理关系的实例是这样的
employee_name | manager_name
-----------------------------
A | B
-----------------------------
B | C
-----------------------------
C | B
-----------------------------
D | B
在这种情况下,如果我删除此关系中的元组(A,B),则不会删除其他元组。我想是这样的。
然而,本书的答案是所有元组都被删除了。我无法理解为什么删除所有元组。
答案 0 :(得分:0)
您有 A,B,C和D作为员工。其中您已将 B和C定义为经理。并且您已选择使用ON DELETE CASCADE
,这意味着如果在表管理器中删除一个父元组,它将自动影响子元素(表Employees)。
基本上,如果您决定删除两个经理(B和C) - B有A,C和D为员工,C有B为员工)。
在这种情况下,可能会像在表创建时定义的那样在级联上删除所有元组。