중요한 데이터베이스가 id
및 parent
인 중첩 세트를 포함하는 테이블을 데이터베이스에 보유하고 있습니다. parent
은 항상 내부에 중첩 된 행 ID를 가리 킵니다.MySQL은 중첩 세트의 항목을 업데이트합니다.
항목을 삭제하면 해당 직접 자식이 존재하지 않는 부모를 가리 키기 시작합니다. 이는 수정하고 싶습니다.
내가 고아 항목의 부모 재설정하기 위해이 쿼리를 시도했다 그러나
UPDATE menu_item
SET parent = 0
WHERE parent NOT IN (
SELECT id FROM menu_item
);
를, 그것은 나에게 오류를 제공합니다 : "당신은에서 업데이트를 목표 테이블을 'MENU_ITEM'지정할 수 없습니다 절."
이 문제를 해결하는 올바른 방법은 무엇입니까?
update m
set parent = 0
from menu_item m
where m.parent not in (select id from menu_item m1);
그것은, 그것은 인접리스트 중첩 된 집합이다 아니다 : – Quassnoi
사실, 중첩 된 집합을 사용하고 있지만 왼쪽 및 오른쪽 열은 내 문제와 관련이 없습니다. – mingos
아, 그래. 부모님이 친부모 나 궁극적 인 조상을 가리 킵니까? – Quassnoi