I isolatet il problema da una query molto più complessa. Qui lo scenario di provaImpossibile selezionare dalla clausola UPDATE RETURNING in 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');
Se eseguo la query:
SELECT * FROM test WHERE id IN (UPDATE test set description='test' RETURNING id)
sto ottenendo il seguente errore:
errore: Errore di sintassi al o "test" nei pressi di LINEA 1: SELECT * FROM test WHERE id (UPDATE test set description = 'test' RE ... ^
*** Fehler ** *
ERRORE: errore di sintassi in prossimità o "test" Stato SQL: 42601 Zeichen: 37
Tuttavia, se si esegue solo lo statemennt
UPDATE test set value='test' RETURNING id
ottengo un risultato con 2 file:
Se substitude quel risultato avrei una query come:
SELECT * FROM test WHERE id IN (1,2);
con il risultato:
1; "test" 2; "test"
Perché non ottengo lo stesso risultato con la mia affermazione iniziale?
Devono essere prospetti separati. È probabile che il fatto che due righe vengano aggiornate causerà problemi, mai provato a RESTITARE quando più di una riga/valore sta tornando. –