WITH x AS (
INSERT INTO users(name, age)
SELECT 'john', 30
WHERE NOT EXISTS (
SELECT id FROM users WHERE name = 'john'
) u
RETURNING (CASE WHEN u.id > 0 THEN u.id ELSE id END)
)
SELECT * FROM x
How can I always return an id and if the id is not present, then insert it. Also, I need this to be in a CTE.