MySQL错误1452 – 无法添加或更新子行:外键约束失败

MySQL错误1452 – 无法添加或更新子行:外键约束失败

要理解错误1452,首先我们需要创建一张表,再通过外键约束将其与另一张表关联起来。

创建第一张表 –

mysql> CREATE table ForeignTable
-> (
-> id int,
-> name varchar(200),
-> Fk_pk int
-> );
Query OK, 0 rows affected (0.43 sec)

成功创建第一张表后,我们将创建第二张表 –

mysql> CREATE table primaryTable1
-> (
-> Fk_pk int,
-> DeptName varchar(200),
-> Primary key(Fk_pk)
-> );
Query OK, 0 rows affected (0.48 sec)

现在,我们已经创建了两张表。然后使用alter命令将两个表关联起来,并添加外键约束。语法如下 –

alter table yourFirstTable add constraint anyConstraintName foreign key(column_name which is
acts foreign key in second table) yourSecondTable(column_name which acts primary key in
second table).

现在,上述查询用于关联两个表。如下所示 –

mysql> alter table ForeignTable add constraint constFKPK foreign key(Fk_pk) references
primaryTable1(Fk_pk);
Query OK, 0 rows affected (1.57 sec)
Records: 0 Duplicates: 0 Warnings: 0

现在,两个表已经关联。将记录插入表“foreignTable”如下 –

mysql> INSERT into ForeignTable values(1,'John',1);

这会导致输出的错误 –

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails
(`business`.`foreigntable`, CONSTRAINT `constFKPK` FOREIGN KEY (`Fk_pk`)
REFERENCES `primarytable1` (`fk_pk`))

在上面的输出中,我们得到错误 “Cannot add or update a child row: a foreign key constraint fails” 。我们可以通过将记录插入表primaryTable1来删除此错误,如下所示 –

mysql> INSERT into primaryTable1 values(1,'ComputerScience');
Query OK, 1 row affected (0.14 sec)

在将记录插入表primaryTable1之后,我们可以将所需记录插入表ForeignTable,而不会出现任何错误。如下所示 –

mysql> INSERT into ForeignTable values(1,'John',1);
Query OK, 1 row affected (0.13 sec)

现在,我们可以使用select命令显示ForeignTable的表记录,如下所示 –

mysql> SELECT * from ForeignTable;

上述查询的输出为 –

+------+------+-------+
| id   | name | Fk_pk |
+------+------+-------+
| 1    | John | 1     |
+------+------+-------+
1 row in set (0.00 sec)

我们还可以使用select命令显示primarytable1的表记录,如下所示 –

mysql> SELECT * from primarytable1;

上述查询的输出为 –

+-------+-----------------+
| Fk_pk | DeptName        |
+-------+-----------------+
| 1     | ComputerScience |
+-------+-----------------+
1 row in set (0.00 sec)

错误1452 – Cannot add or update a child row: a foreign key constraint fails 产生于将数据记录最初插入ForeignTable时。
注意:首先,将记录添加到第二个表,即primarytable1,以避免上述错误。

阅读更多:MySQL 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程