2009-11-13 4 views
0

나는 많은 나무를 나타내는 데이터베이스 테이블을 가지고있다. 처음 세 열은 다음과 같은 GUID입니다.SQL에서 트리를 재귀 적으로 업데이트하는 방법은 무엇입니까?

NODE_ID (PK) 
PARENT_NODE_ID (FK to same table, references NODE_ID) 
TREE_ID (FK to another table) 

노드를 다른 트리로 이동할 수 있습니다. 까다로운 부분은 모든 자식 노드를 가져 오는 것입니다. 재귀 적 업데이트가 필요합니다. (그렇습니다. 처음에는 다소 좋지 않은 디자인이었습니다. 설계하지 않았기 때문에 유지 관리해야하며 데이터베이스 스키마를 변경할 수는 없습니다.

저장 프로 시저로 SQL에서 업데이트를 할 수 있습니다. 그러나 커서를 사용하지 않고 집합 논리에 필요한 재귀 연산을 구현하는 방법을 생각할 수 없습니다. 누구든지 이것을 풀 수있는 합리적으로 간단한 방법을 알고 있습니까?

+0

참고 : 여기 링크입니다 tree_id가 중복, 그리고 그 업데이트 문제가 발생합니다. – wildplasser

답변

0

Postgres 또는 MS SQL 2005를 사용하는 경우 재귀 적 업데이트를 사용할 수 있습니다. 그렇지 않으면 인접성 목록 이외의 방법을 사용하는 것이 좋습니다. 몇 주 전에이 문제에 대해 말하고 계층 적 데이터를 저장하는 프레젠테이션을 보았습니다.

http://www.slideshare.net/billkarwin/practical-object-oriented-models-in-sql

시작 @ 슬라이드 (40)

+0

MS SQL 2005를 사용하고 있습니다. 재귀 업데이트는 어떻게 사용합니까? 나는 SQL 전문가를 위해 실수하는 사람이 아니다 ... –

관련 문제