MySQL錯誤1452 - 無法新增或更新子行:外部索引鍵約束失敗?
每當我們在表之間新增外部索引鍵約束並在子表中插入記錄時,就會出現此錯誤。讓我們來看一個例子。
建立子表。
mysql> create table ChildDemo -> ( -> id int, -> FKPK int -> ); Query OK, 0 rows affected (0.86 sec)
建立第二個表。
mysql> create table ParentDemo -> ( -> FKPK int, -> Name varchar(100) -> , -> primary key(FKPK) -> ); Query OK, 0 rows affected (0.57 sec)
新增外部索引鍵約束。
mysql> alter table ChildDemo add constraint ConstChild foreign key(FKPK) references ParentDemo(FKPK); Query OK, 0 rows affected (1.97 sec) Records: 0 Duplicates: 0 Warnings: 0
建立外部索引鍵約束後,每當我們在第一個表或子表中插入記錄時,都會收到上述錯誤。
mysql> insert into ChildDemo values(1,3); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`business`.`childdemo`, CONSTRAINT `ConstChild` FOREIGN KEY (`FKPK`) REFERENCES `parentdemo` (`fkpk`))
當您嘗試新增在另一個表中沒有匹配行的行時,會發生此錯誤。
如上所述
“外部索引鍵關係涉及一個包含中心資料值的父表,以及一個包含相同值並指向其父表的子表。FOREIGN KEY子句在子表中指定。如果子表中沒有匹配的候選鍵值在父表中,它將拒絕任何嘗試在子表中建立外部索引鍵值的INSERT或UPDATE操作。”
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP