Как UPDATE и SELECT одновременно

Мне нужно обновить некоторые строки таблиц, а затем отобразить эти строки. Есть ли способ сделать это с помощью одного запроса и избежать этого запроса? :

UPDATE table SET foo=1 WHERE boo=2 SELECT * from table WHERE ( foo=1 ) AND ( boo=2 ) 

В PostgreSQL v8.2 и новее вы можете сделать это, используя RETURNING :

 UPDATE table SET foo=1 WHERE boo=2 RETURNING * 

Вы можете использовать хранимую процедуру в PL / pgSQL. Взгляните на [docs] [1]

Что-то вроде этого

 CREATE FUNCTION run(fooVal int, booVal int) RETURNS TABLE(fooVal int, booVal int) AS $$ BEGIN UPDATE table SET foo = fooVal WHERE boo= booVal; RETURN QUERY SELECT fooVal, booVal from table WHERE ( foo = fooVal ) AND ( boo = booVal ); END; $$ LANGUAGE plpgsql; 

Вы сохраните время для отправки другого заявления. Это не должно быть узким местом производительности. Короткий ответ: просто используйте два запроса. Все в порядке, и так вы делаете это в SQL.

[1]: http://www.postgresql.org/docs/8.4/static/plpgsql.html документы

Вы можете использовать хранимую процедуру или функцию. Он будет содержать ваши запросы.