WITH RECURSIVE folder_hierarchy AS ( -- Start with the given directory SELECT folder_id FROM folders WHERE folder_id = $1 UNION ALL -- Recursively find all subdirectories SELECT f.folder_id FROM folders f INNER JOIN folder_hierarchy fh ON f.parent_folder_id = fh.folder_id ) DELETE FROM permissions WHERE user_id = $2 AND folder_id IN (SELECT folder_id FROM folder_hierarchy)