Izoluję problem ze znacznie bardziej złożonego zapytania. Oto scenariusz testowyNie można wybrać z klauzuli UPDATE RETURNING w postgresie
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');
Jeśli uruchomić kwerendę:
SELECT * FROM test WHERE id IN (UPDATE test set description='test' RETURNING id)
Dostaję następujący błąd:
BŁĄD: błąd składni na lub w pobliżu "test" Linia 1: SELECT * FROM test WHERE id (opis zestawu testów UPDATE = "test" RE ... ^
*** Fehler ** *
BŁĄD: błąd składni na lub w pobliżu "test" SQL Status: 42601 Zeichen: 37
Jednak jeśli tylko uruchomić statemennt
UPDATE test set value='test' RETURNING id
uzyskać wynik z 2 rzędów:
Jeśli substitude że wynik bym zapytania jak:
SELECT * FROM test WHERE id IN (1,2);
z wynikiem:
1; "test" 2, "test"
Dlaczego nie uzyskuję tego samego wyniku z moim początkowym stwierdzeniem?
Muszą być jednostkowe sprawozdanie. Fakt, że dwa wiersze są aktualizowane, może powodować problemy, nigdy nie próbowano ZWRACAĆ, gdy wraca więcej niż jeden wiersz/wartość. –