Невозможно SELECT из предложения UPDATE RETURNING в postgres

Я выделил проблему из гораздо более сложного запроса. Здесь тестовый сценарий

DROP TABLE test; 
CREATE TABLE test (
  id integer,
  description varchar(100)
);

INSERT INTO test(id, description) VALUES (1,'new'); 
INSERT INTO test(id, description) VALUES (2,'new'); 

. Если я запрошу:

SELECT * FROM test WHERE id IN (UPDATE test set description='test' RETURNING id)

Я получаю следующую ошибку:

ОШИБКА: синтаксическая ошибка в "тесте" или рядом с ним. СТРОКА 1: SELECT * FROM test WHERE id (UPDATE test set description = 'test' RE ... ^

*** Фелер ** *

ОШИБКА: синтаксическая ошибка в "тесте" или рядом с ним. Статус SQL: 42601 Zeichen: 37

Однако, если я запускаю только statemennt

UPDATE test set value='test' RETURNING id

, я получаю результат с двумя строками:

1 2

Если я подставлю этот результат, у меня будет запрос вроде:

SELECT * FROM test WHERE id IN (1,2);

с результатом:

1; "test" 2; "test"

Почему я не получаю тот же результат с моим начальным утверждением?

14
задан markus 25 August 2011 в 14:36
поделиться