【发布时间】:2018-02-08 19:21:31
【问题描述】:
我有两张桌子,一张给员工,一张给部门。一个部门可以有多名员工,但一名员工只能在一个部门工作。他们的关系是 [1:many]。
我正在尝试在 MySQL 中执行此操作,但遇到了一个问题。如果我有 8 个不同的部门,并且我尝试添加超过 8 名在不同部门工作的员工,我会收到以下错误:
Cannot add or update a child row: a foreign key constraint fails (`testdb`.`employee`, CONSTRAINT `employee_ibfk_1` FOREIGN KEY (`id`) REFERENCES `department` (`id`))
如果我有 8 名或更少的员工,一切都会很好。添加第 9 名员工后,我收到上述错误。
部门表:
CREATE TABLE IF NOT EXISTS department(
id INT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL UNIQUE
)ENGINE=INNODB;
部门插播:
INSERT INTO department(name) VALUES ('Athens');
INSERT INTO department(name) VALUES ('Patras');
INSERT INTO department(name) VALUES ('Kalamata');
INSERT INTO department(name) VALUES ('Heraklion');
INSERT INTO department(name) VALUES ('Thessaloniki');
INSERT INTO department(name) VALUES ('Xanthi');
INSERT INTO department(name) VALUES ('Larisa');
INSERT INTO department(name) VALUES ('Alexandroupoli');
员工表:
CREATE TABLE IF NOT EXISTS employee(
id INT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
born INT(20) NOT NULL,
country VARCHAR(255) NOT NULL,
department_name VARCHAR(255) NOT NULL,
FOREIGN KEY (id) references department(id)
)ENGINE=INNODB;
员工插入:
INSERT INTO employee(first_name,last_name,email,born,country,department_name) VALUES('Vaggelis','Michos','vagg7@gmail.com','1995','Greece','Athens');
INSERT INTO employee(first_name,last_name,email,born,country,department_name) VALUES('James','Gunn','james8@gmail.com','1970','USA','Athens');
INSERT INTO employee(first_name,last_name,email,born,country,department_name) VALUES('George','McMahon','george95@gmail.com','1978','Usa','Patras');
INSERT INTO employee(first_name,last_name,email,born,country,department_name) VALUES('John','Jones','john13@gmail.com','1992','England','Patras');
INSERT INTO employee(first_name,last_name,email,born,country,department_name) VALUES('Marinos','Kuriakopoulos','marin_kur@gmail.com','1986','Greece','Alexandroupoli');
INSERT INTO employee(first_name,last_name,email,born,country,department_name) VALUES('Dimitris','Nikolaou','dimitis8@yahoo.gr','1984','Greece','Larisa');
INSERT INTO employee(first_name,last_name,email,born,country,department_name) VALUES('Soufiane','El Kaddouri','sofiane@yahoo.com','1974','France','Xanthi');
INSERT INTO employee(first_name,last_name,email,born,country,department_name) VALUES('Maria','Apostolou','mariamaria1@gmail.com','1997','Greece','Larisa');
INSERT INTO employee(first_name,last_name,email,born,country,department_name) VALUES('Ioannis','Marinou','ioannis_ap@yahoo.gr','1982','Greece','Kalamata');
INSERT INTO employee(first_name,last_name,email,born,country,department_name) VALUES('Thanasis','Athanasiou','thanos89@gmail.com','1989','Cyprus','Heraklion');
这是 CREATE-INSERT 操作后的样子:
如您所见,在Employees表的第9次插入时,插入失败,我得到了我描述的错误,即:
Cannot add or update a child row: a foreign key constraint fails (`testdb`.`employee`, CONSTRAINT `employee_ibfk_1` FOREIGN KEY (`id`) REFERENCES `department` (`id`))
【问题讨论】:
标签: mysql database constraints relationship