我正在尝试为练习创建员工数据库。我收到此错误:
介绍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
答案 0 :(得分:0)
使用ON UPDATE CASCADE具有相互外键会创建一个循环,因为如果从一个修改一行,它会在另一个表上搜索要删除/修改的行,这会触发另一个表中的修改(发起的一个表)改变)等等。
更改FK的ON UPDATE和ON DELETE选项。评估是否需要它们相互引用字段(您可能使用错误的属性进行设计)