我正在关注此数据库类的book。该数据库有6个表格。从他们中的6位我将发布两个表。如何在MySQL数据库中存在关系约束时插入数据
/*EMPLOYEE Table */
CREATE TABLE EMPLOYEE(
Fname VARCHAR(15) NOT NULL,
Minit CHAR,
Lname VARCHAR(15) NOT NULL,
Ssn CHAR(9) NOT NULL,
Bdate DATE,
Address VARCHAR(30),
Sex CHAR,
Salary DECIMAL(10,2),
Super_ssn CHAR(9),
Dno INT NOT NULL,
PRIMARY KEY (Ssn),
FOREIGN KEY (Super_ssn) REFERENCES EMPLOYEE(Ssn)
FOREIGN KEY (Dno) REFERENCES DEPARTMENT(Dnumber));
员工表具有递归关系来演示“员工是另一员工的主管”。它还引用DEPARTMENT表来显示员工在部门工作。以下是DEPARTMENT表的模式。
CREATE TABLE DEPARTMENT(
Dname VARCHAR(15) NOT NULL,
Dnumber INT NOT NULL,
Mgr_ssn CHAR(9) NOT NULL,
Mgr_start_date DATE,
PRIMARY KEY (Dnumber),
UNIQUE (Dname),
FOREIGN KEY (Mgr_ssn) REFERENCES EMPLOYEE(Ssn)
);
DEPARTMENT表引用员工表来显示员工管理部门。 插入时的数据,如
insert into EMPLOYEE values
('John','B','Smith','123456789','1965-01-09','731 Fondren, Houston, TX',
'M',30000,'333445555',5);
我们将无法执行上述查询,但由于是参照完整性FOREIGN KEY (Super_ssn) REFERENCES EMPLOYEE(Ssn)
。同样如果我尝试下面的查询
insert into department values ('Research',5,'333445555','1988-05-22');
上面的查询不会执行,因为员工表中没有数据。我的问题是我们应该先插入数据,然后改变表格并强制引用完整性约束。或者有办法解决。您的建议/意见将不胜感激。谢谢。
它不需要像放下约束一样激烈。只要允许该列为空。 – e4c5