Como você notou corretamente, você não pode ver as linhas modificadas no CTE no
SELECT
principal . Este está documentado
:Então você deve usar
RETURNING
. Acho que a maneira mais simples seria não usar uma função, mas executar
json_build_object
na consulta principal e faça com que ela opere nos CTEs parents
e children
.