Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

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 작업을 거부합니다."