0
DDL用于创建数据库是这样SQL参考integerity递归
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),在此关系其他元组不会被删除。我是这样想的。
但书的答案是所有的元组都被删除。我不明白为什么所有的元组都被删除。
将employee_name添加到外键约束:外键(manager_name)在删除级联时引用manager(employee_name) –
DDL在书中。问题是如果一个关系中的元组被删除,会发生什么 – Damotorie
您的代码无效。对于外键,您需要指定它所引用的列,它目前只指定它引用的表。如果它引用主键,那么你是对的,它不会删除每一行。但是你应该避免检查你所要做的是本书告诉你要做什么。也许有另一个外键,一个不同的外键,不同的样本数据,或者你应该删除一个不同于((A,B))的元组来获得这个效果。 – Solarflare