2017-03-22 6 views
0

나는이 같은 두 개의 테이블이 있습니다MySQL은 자식 행에서 행을 추가 1452

CREATE TABLE parentTable(
pID INT, 
ArtNr INT, 
Name VARCHAR(50), 
PRIMARY KEY(ID), 
UNIQUE KEY (ArtNr) 
); 

지금

CREATE TABLE childTable(
cID  INT, 
ArtNr  INT, 
Name  VARCHAR(50), 
UNIQUE KEY (ArtNr), 
FOREIGN KEY (ArtNr) REFERENCES parentTable(ArtNr) ON UPDATE CASCADE ON DELETE CASCADE 
); 

내가이며,이 문제를 경우 그 내 parentTable에없는 ArtNr 내 childTable의 항목이,이 오류 메시지가 얻을 :

1452 Cannot add or update a child row: a foreign key constraint fails (`sys`.`childTable`, CONSTRAINT `childTable_ibfk_1` FOREIGN KEY (`ArtNr`) REFERENCES `parentTable` (`ArtNr`) ON DELETE CASCADE ON UPDATE CASCADE) 

무엇 parentTable에 childTable의 항목이 없으면 행을 추가하고 싶습니다. 그렇게 할 수 있습니까?

+0

무엇이 필요하십니까? 외래 키 제약 조건을 만들었습니다. 그리고 지금은 그것을 피하려고 노력합니다. – Devart

+0

아니요. 누락 된 항목을 parentTable에 추가하고 싶습니다. – Alex

+0

해답을보십시오 (파트 2). – Devart

답변

0

서버 변수 FOREIGN_KEY_CHECKS를 사용하여 외래 키 값 검사를 on/off 할 수 있습니다. 예를 들어

:

SET FOREIGN_KEY_CHECKS=0; 

// ... 
// your script... 
// ... 

SET FOREIGN_KEY_CHECKS=1; 

상세 정보 - foreign_key_checks.


이 쿼리를 사용하여 누락 된 항목을 찾을 수 있습니다 -

SELECT c.* FROM child c 
LEFT JOIN parent p 
    ON p.id = c.id 
WHERE p.id IS NULL; 

그런 다음 부모 테이블에 ID의이 세트를 삽입합니다. INSERT..SELECT 진술 문을 사용하여 수행하십시오.

+0

감사합니다. 그러나 이것은 누락 된 항목을 추가하는 데 도움이되지 않습니다 – Alex

+0

전체 스크립트를 표시하십시오. – Devart

+0

감사합니다 ..이 진술로 누락 된 항목을 찾았습니다. – Alex