Get the receipt
Most SQL databases run INSERT/UPDATE/DELETE as fire-and-forget. PostgreSQL's RETURNING turns them into operations that return data — the affected rows come back as if you'd run a SELECT against them.
Why this matters
The classic alternative is "INSERT, then SELECT to get the new ID." That's two round trips, plus a race condition between the insert and the select. RETURNING does both in one statement, atomically. Halve your latency, eliminate the race.
Combine with CTEs for atomic chains
Wrap a DELETE ... RETURNING inside a CTE and then INSERT the result somewhere else — and you have an atomic "delete from one place, copy to another" in a single statement.