2017-10-15 8 views
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); 

似ていますrelation他のタプルは削除されません。私はそのように思った。

しかし、書籍の答えはすべてのタプルが削除されています。なぜすべてのタプルが削除されたのか理解できません。

+0

employee_nameを外部キー制約に追加します。外部キー(manager_name)は、削除カスケード時にmanager(employee_name)を参照します。 –

+0

そのDDLは本にあります。その関係の1つのタプルが削除された場合、何が起こるのですか?質問がありました – Damotorie

+0

あなたのコードは無効です。外部キーの場合、参照する列を指定する必要があります。現在、参照する表のみが指定されています。それがプライマリキーを参照していれば、すべての行が削除されるわけではありません。しかし、あなたがしようとしていることは、その本があなたにすると言っていることであることを確認する必要があります。他の外部キー、別の外部キー、異なるサンプルデータがあるか、 '(A、B)'と異なるタプルを削除してその効果を得ることになっているかもしれません。 – Solarflare

答えて

0

A、B、C、Dは従業員です。その中でBとCをマネージャーとして定義しました。そして、ON DELETE CASCADEを使用することを選択したことは、テーブルマネージャで1つの親タプルを削除すると、自動的に子テーブルに影響を与えます(従業員テーブル)。あなたは両方のマネージャ(BおよびC)を削除することにした場合

基本的には、 - Bは、従業員として、CおよびDを持っていたし、Cは、従業員)としてBを持っていました。

この場合、テーブル作成時に定義したように、すべてのタプルがカスケードで削除される可能性があります。