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`))
在上面的輸出中,我們得到了錯誤“無法新增或更新子行:外部索引鍵約束失敗”。我們可以透過將記錄插入到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** - 無法新增或更新子行:外部索引鍵約束失敗,發生在資料記錄最初插入到ForeignTable時。
Note: First, add the record into the second table i.e primarytable1 to avoid the above error.
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP