Điều kiện cuối cùng không áp dụng cho dữ liệu của bạn, nhưng điều rất quan trọng là tránh đệ quy vô hạn.
Để minh họa điểm này, hãy xem xét điều gì sẽ xảy ra nếu bạn thêm một dòng khác vào bảng của mình:
E40 E40
Nếu bạn bắt đầu bằng E40
thay vì E90
, Oracle sẽ quay thành một đệ quy vô hạn mà không có EMP_ID != MANAGER_ID
điều kiện, bởi vì E40
sẽ kết nối lại với E40
.
Lưu ý rằng cách tốt hơn để viết truy vấn này là sử dụng NOCYCLE
thay vì viết mã trong một kiểm tra rõ ràng:
SELECT *
FROM Temp
START WITH EMP_ID = 'E90'
CONNECT BY NOCYCLE PRIOR EMP_ID = MANAGER_ID
ORDER BY EMP_ID