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

Posted

技术标签:

【中文标题】循环或多个级联路径。 SQL 错误?【英文标题】:cycles or multiple cascade paths. SQL Error? 【发布时间】:2018-08-10 18:38:44 【问题描述】:

我正在尝试创建 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

【问题讨论】:

Foreign key constraint may cause cycles or multiple cascade paths?的可能重复 【参考方案1】:

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

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

【讨论】:

以上是关于循环或多个级联路径。 SQL 错误?的主要内容,如果未能解决你的问题,请参考以下文章

定义多对多关系的代码第一种方法导致关于“循环或多个级联路径”的mssql错误

外键约束可能导致循环或多个级联路径[重复]

SQL Server 引入 FOREIGN KEY 约束可能导致循环或多个级联路径

可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束

引入 FOREIGN KEY 约束可能会导致循环或多个级联路径 - 为啥?

MSSQL约束可能导致循环或多个级联路径[重复]