2012-05-21 3 views
1

내가 가지고 테이블을 삭제합니다 : MySQL의 절차는 관련 행을

id parent name 

지금, 부모 필드는 다른 행의 ID입니다. MySQL이 말한대로 내가 그것을 위해 트리거를 사용할 수 없습니다

저장 기능에 테이블 'products_categories'을 업데이트 할 수 없습니다/트리거가 이미 저장 기능/트리거를 호출 문에 의해 사용되기 때문이다.

삭제 된 ID와 같은 상위가있는 모든 행을 삭제하는 절차는 어떻게해야합니까?

+0

자녀 또는 모든 자손이 필요합니까? –

+0

참조 http://stackoverflow.com/questions/2334478/mysql-triggers-cannot-update-rows-in-same-table-the-trigger-is-assigned-to-sugg –

+0

@ srini.venigalla 삭제한다고 가정 해 봅시다. id = 40. 그런 다음 트리거/프로 시저는 parent = 40 인 모든 행을 삭제해야합니다. 모든 다른 것들을 제거 할 때 트리거/절차가 그들을 위해서도 작동해야합니다. – rzeka

답변

0

프로 시저를 재귀 적으로 호출 할 수 있습니다. parent 값이 NULL이 아닌

  • 경우 (그 id에 의해) 기록을 제거 변수
    • 읽기 parent 값 - 다시 프로 시저를 호출하고 IN 인수로 parent 값을 전달 : 절차는 다음을 수행해야합니다 .

    확인 서버 변수 max_sp_recursion_depth - 저장 프로 시저가 자신을 호출 할 수있는 횟수.