循环或多个级联路径。 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约束