2

我正在尝试将值插入到员工表中,但是当我尝试执行脚本时,它给了我这个错误。我究竟做错了什么?

回复:

错误代码:1452。无法添加或更新子行:外键约束失败(smolcompany. employee, CONSTRAINT employee_fk2 FOREIGN KEY ( DeptID) REFERENCES department( DeptID) ON DELETE RESTRICT ON UPDATE CASCADE)

行动:

插入员工价值观 (4283, 'Sarim Mansoor', 'M', 27, 'Mont Kiara', NULL, 102), (4465, 'Teh Yi Heng', 'M', 23, 'Cyber​​jaya', NULL, 101 ), (4123, 'Thamal Kishen', 'F', 47, '八打灵再也', 4283, 102), (3978, 'Mike Ross', 'M', 26, 'Mont Kiara', NULL, 103), (5240, '玛莎阿诺德', 'F', 27, 'Mont Kiara', 4465, 101)

桌子:

CREATE TABLE employee 
(
EmpID INT NOT NULL,
EmpName VARCHAR(50) NOT NULL,
EmpGender CHAR(1) NOT NULL,
EmpAge INT NOT NULL,
EmpAddress VARCHAR(50) NOT NULL,
SuperID INT,
DeptID INT NOT NULL,
CONSTRAINT employee_pk PRIMARY KEY(EmpID),
CONSTRAINT employee_uk UNIQUE(EmpName),
CONSTRAINT employee_ck CHECK(EmpAge>18 AND EmpAge<100),
CONSTRAINT employee_fk1 FOREIGN KEY(SuperID) REFERENCES employee(EmpID) ON UPDATE CASCADE ON DELETE RESTRICT
);

CREATE TABLE department 
(
DeptID INT NOT NULL,
DeptName VARCHAR(50) NOT NULL,
DeptBlock CHAR(1) NOT NULL,
DeptLevel INT NOT NULL,
ManagerID INT NOT NULL,
MStartDate DATE NOT NULL,
CONSTRAINT department_pk PRIMARY KEY(DeptID),
CONSTRAINT department_uk UNIQUE(DeptName),
CONSTRAINT department_ck CHECK(DeptBlock='A' OR DeptBlock='B' OR DeptBlock='C'),
CONSTRAINT department_fk FOREIGN KEY(ManagerID) REFERENCES employee(EmpID) ON UPDATE CASCADE ON DELETE RESTRICT
);

ALTER TABLE employee ADD CONSTRAINT employee_fk2 FOREIGN KEY(DeptID) REFERENCES department(DeptID) ON UPDATE CASCADE ON DELETE RESTRICT;

价值观:

INSERT INTO employee 
VALUES
(4283, 'Sarim Mansoor', 'M', 27, 'Mont Kiara', NULL, 102),
(4465, 'Teh Yi Heng', 'M', 23, 'Cyberjaya', NULL, 101),
(4123, 'Thamal Kishen', 'F', 47, 'Petaling Jaya', 4283, 102),
(3978, 'Mike Ross', 'M', 26, 'Mont Kiara', NULL, 103),
(5240, 'Martha Arnold', 'F', 27, 'Mont Kiara', 4465, 101);
4

1 回答 1

2

我发现了问题,我不得不添加约束

ALTER TABLE employee ADD CONSTRAINT employee_fk2 FOREIGN KEY(DeptID) REFERENCES department(DeptID) ON UPDATE CASCADE ON DELETE RESTRICT;

只有在我创建了两个表并插入了所有值之后。谢谢大家的建议。

于 2021-11-17T15:08:14.760 回答