오류 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)
이제 두 테이블을 모두 만들었습니다. 그런 다음 두 테이블 모두 altercommand의 도움과 외래 키 제약 조건 추가와 관련이 있습니다. 구문은 다음과 같습니다 -
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 child row:foreign keyconstraint failed' 오류가 발생합니다. 아래와 같이 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.