gpt4 book ai didi

mysql - MySQL数据库有关系约束时如何插入数据

转载 作者:行者123 更新时间:2023-11-29 07:30:37 40 4
gpt4 key购买 nike

我正在关注这个 book 作为我的数据库类。数据库有6张表。从这 6 个表格中,我将发布其中两个表格。

/*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');

上面的查询不会执行,因为员工表中没有数据。我的问题是我们应该首先插入数据,然后更改表并强制执行引用完整性约束。或者有什么办法可以解决。我们将不胜感激您的建议/建议。谢谢。

最佳答案

外键可以有空值。因此,您可以输入外键值为 null 的值,就像最顶层的主管不会在他之上有主管一样。

因此,总体思路是自下而上输入数据,例如在没有外键的表中输入值,然后在引用该表的顶部输入值,依此类推......

确切的方法取决于您在示例中使用的其余表。

关于mysql - MySQL数据库有关系约束时如何插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32760642/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com