2009-12-28 5 views
0

나는 구조를 가지고있는 "범주"테이블이 있습니다MySQL의 외래 키

  • 카테고리 ID
  • parentId
  • categoryName이

parentId 사실이다이 표는 분류 트리 구조를 나타냅니다 categoryId에 대한 포인터.

categoryId를 가리키는 parentId에 외래 키 RESTRICT를 두어 하위 노드의 삭제를 비활성화 할 수 있습니까?

답변

2

예, 확실히 테이블 자체를 참조하는 외래 키가있을 수 있습니다. 예 :

자연스럽게이 작업을 수행하려면 MyISAM이 아닌 InnoDB를 사용해야합니다.

+0

고마워하지만 지금은 또 다른 문제가 있습니다 : categoryId = 0, categoryId = 0 인 경우 categoryId = 1, parentId = 0, categoryName = 'test'이어야하는 첫 번째 레코드를 어떻게 입력합니까? – dfilkovi

+0

parentId가 없으면 '0'대신 'NULL'을 사용하십시오. – bobince

+0

예 NULL은 작동하지만 쿼리가 다릅니다. PHP에서 "parentId = $ var"의 재귀 함수를 사용하고 null 인 경우 "where parentId IS NULL"을 사용해야하고 많은 일이 복잡합니다. – dfilkovi