Ostatni warunek nie dotyczy Twoich danych, ale bardzo ważne jest, aby uniknąć nieskończonej rekurencji.
Aby zilustrować ten punkt, zastanów się, co by się stało, gdybyś dodał kolejny wiersz do tabeli:
E40 E40
Jeśli zaczynasz od E40
zamiast E90
, Oracle obracałoby się w nieskończoną rekurencję bez EMP_ID != MANAGER_ID
warunek, ponieważ E40
połączy się z powrotem do E40
.
Zauważ, że lepszym podejściem do pisania tego zapytania jest użycie NOCYCLE
opcja zamiast kodowania w jawnej kontroli:
SELECT *
FROM Temp
START WITH EMP_ID = 'E90'
CONNECT BY NOCYCLE PRIOR EMP_ID = MANAGER_ID
ORDER BY EMP_ID