循环或多个级联路径。 SQL错误?

时间:2018-03-02 14:16:25

标签: sql sql-server

我正在尝试为练习创建员工数据库。我收到此错误:

  

介绍FOREIGN KEY约束' fk_dno'在桌子上'员工'可以   导致循环或多个级联路径。指定ON DELETE NO ACTION或   ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束?

导致此错误的原因是什么?

create table Department(
    Dno int not null,
    Name_d varchar(30),
    primary key(Dno)
)

create table Employee(
    E_id int not null,
    F_name varchar(30),
    L_name varchar(30),
    B_date date,
    address_e varchar(30),
    salary int,
    Sex varchar(8),
    Cnic varchar(15),
    Email varchar(50),
    start_date_e date,
    primary key (E_id)
)

alter table Department add  Mgr_id int
alter table Department add constraint fk_mgr Foreign key(Mgr_id) references Employee(E_id) on update cascade on delete set null

alter table Employee add  Dno int
alter table Employee add constraint fk_dno Foreign key(Dno) references Department(Dno) on update cascade on delete set null

1 个答案:

答案 0 :(得分:0)

使用ON UPDATE CASCADE具有相互外键会创建一个循环,因为如果从一个修改一行,它会在另一个表上搜索要删除/修改的行,这会触发另一个表中的修改(发起的一个表)改变)等等。

更改FK的ON UPDATE和ON DELETE选项。评估是否需要它们相互引用字段(您可能使用错误的属性进行设计)