SQL "RETURNING * | output_expression [ [ AS ]" is wrong
The following documentation comment has been logged on the website:
Page: https://www.postgresql.org/docs/14/sql-update.html
Description:
https://www.postgresql.org/docs/14/sql-update.html
Hi! AFAIK, UPDATE .... RETURNING works with INTO varname, not AS
Documentation says:
UPDATE
[ WITH [ RECURSIVE ] with_query [, ...] ]
UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
SET { column_name = { expression | DEFAULT } |
( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [,
...] ) |
( column_name [, ...] ) = ( sub-SELECT )
} [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition | WHERE CURRENT OF cursor_name ]
[ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
BUT it does not work, it does:
UPDATE
[ WITH [ RECURSIVE ] with_query [, ...] ]
UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
SET { column_name = { expression | DEFAULT } |
( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [,
...] ) |
( column_name [, ...] ) = ( sub-SELECT )
} [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition | WHERE CURRENT OF cursor_name ]
[ RETURNING * | output_expression [ [ INTO ] output_name ] [, ...] ]
Regards,
Miguel.
Hi,
On Mon, Mar 21, 2022 at 10:09:55AM +0000, PG Doc comments form wrote:
The following documentation comment has been logged on the website:
Hi! AFAIK, UPDATE .... RETURNING works with INTO varname, not AS
I think you're confusing with plpgsql's INTO [1]https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW. The documented syntax works
as expected:
# UPDATE tt SET id = 2 WHERE id = 1 RETURNING id AS new_id;
new_id
--------
2
(1 row)
[1]: https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW