2014-05-09 3 views
0

'parentNodeId'라는 외래 키가있는이 테이블의 다른 행을 참조하는 'node'라는 MySQL 테이블이 있습니다. 이렇게하면 외래 키를 통해 다른 노드 내에 노드를 가질 수 있습니다.외래 키 제약 조건이있는 행 삭제

삭제하거나 부모 행을 업데이트 할 수 없습니다 :. 외래 키 제약 조건이 (PFeCommerce 실패 node 나는 SQL 오류 출력이 테이블에서 행을 삭제할 때

확인 후, 문제는 , CONSTRAINT FK_857FE84548C76A8E FOREIGN KEY (parentNodeId는) 참고 문헌 node (id))

그래서 내가 삭제하려는 행으로 이동, 내가 가진 필드 'parentNodeId'을 설정 NULL 값 그러나 여전히 오류가 발생합니다.

내가 뭘 잘못하고 있니?

+0

오류는 다른 행 (해당 행을 삭제하려고 시도하지 않은 행)에 행의 ID (예 : delete)를 parentNodeId 열에 추가합니다. – AgRizzo

답변

0

THRE 문제는 자식 노드를 삭제하고자하지,하지만 삭제하려는 노드가 다른 요소의 부모 노드임을

2 예 참조 :

parent node // this one has id = 1 
    \ 
    child node // this one has parentNodeID set to 1 

당신의 경우를 단지 자식 노드는 부모 노드에 따라 같은 오류에 대한 이유가 없다, 자식 노드를 삭제하고, 다른 데이터는 경우에 자식 노드

에 의존하지 :

parent node // id = 1 
    \ 
    child node // this is the one you want to delete, parentNodeId = 1 
     \ 
     another child node 

이제 "자식 노드"를 삭제하지만 다른 노드 (다른 자식 노드)는 parentNodeId 필드에 해당 ID가 있으므로 "자식 노드"를 삭제하면 다음을 가리키는 관계가 있습니다. 키 제약으로 인해 오류가 발생하는 존재하지 않는 레코드입니다.

관련 문제