sql >> Base de Datos >  >> RDS >> PostgreSQL

No se puede SELECCIONAR de la cláusula UPDATE RETURNING en postgres

Antes de PostgreSQL 9.1, INSERT/UPDATE/DELETE solo se podía usar como declaraciones de nivel superior. Es por eso que está recibiendo un error de sintaxis.

A partir de la versión 9.1, puede usar declaraciones de modificación de datos con expresiones de tabla comunes. Su consulta de ejemplo se vería así:

WITH updated AS (UPDATE test SET description = 'test' RETURNING id)
SELECT * FROM test WHERE id IN (SELECT id FROM updated);

Tenga cuidado al seleccionar de la tabla recién modificada. Puede obtener resultados confusos de esa manera. Debido a que las consultas se ejecutan en la misma instantánea, SELECT no verá los efectos de la instrucción UPDATE.