@potapuff

PostgreSQL использование Update в Select;

PostgreSQL начиная с 8-й версии поддерживает ключевое слово RETURNING в UPDATE запросах.

Почему нельзя сделать SELECT из резултатов, возвращаемых UPDATE?

Пример:
Подготовка:

CREATE TABLE tbl( KEY int, val int);
Insert into tbl values (1,1);


Проверка:
UPDATE tbl SET val = 1
WHERE KEY = any('{0,1,2,3,4,5}'::int[])
returning KEY;


WTF!!!

SELECT * from (
UPDATE tbl SET val = 1
WHERE KEY = any('{0,1,2,3,4,5}'::int[])
returning (KEY)) as foo;

ERROR: syntax error at or near "SET"
СТРОКА 2: UPDATE tbl SET val = 1
  • Вопрос задан
  • 9235 просмотров
Решения вопроса 1
@potapuff Автор вопроса
спасибо за помощь. Ответ обнаружился на Stackoverflow — это просто баг PG.

stackoverflow.com/questions/7191902/cannot-select-from-update-returning-clause-in-postgres
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
abarmot
@abarmot
Если вам нужно просто получить данные — прочитайте результат апдейта, как обычный селект.
Ответ написан
alexius2
@alexius2
Вчера новая версия вышла — 9.1, в ней должно теперь работать. По крайней мере заявлено так:
* Теперь допускается изменение данных (INSERT/UPDATE/DELETE) в предложении WITH.
Ответ написан
Комментировать
el777
@el777
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы