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

问题描述 投票:0回答:1

我正在尝试为练习创建Employee数据库。我收到这个错误:

在表'Employee'上引入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
sql sql-server
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.