Truy vấn phân cấp chỉ hoạt động với SELECT. Nó không hoạt động với UPDATE (Tôi đồng ý rằng nó có thể gọn gàng nếu nó xảy ra).
Vì vậy, những gì bạn có thể làm là:
update HTABLE
set status = 'INACTIVE'
WHERE STATUS <> 'CLOSE'
and id in ( select c.id
from htable
connect by prior ID = PARENT_ID
start with PARENT_ID = 12345);
Lưu ý thứ tự của các cột connect by prior ID = PARENT_ID
trước . Thông thường, chúng tôi muốn đi bộ xuống cây từ hàng BẮT ĐẦU VỚI, đó là những gì tôi đã làm. Đặt hàng của bạn connect by prior PARENT_ID = ID
trước đi lên cái cây từ 12345 đến cha mẹ, ông bà của nó, v.v. Nếu đó là điều bạn muốn, hãy chuyển connect by
mệnh đề trở lại.