如何UPDATE和SELECT同时

时间:2010-05-29 08:39:27

标签: php database postgresql select

我需要更新表的某些行,然后显示这些行。有没有办法用一个查询执行此操作并避免此2查询? :

UPDATE table SET foo=1 WHERE boo=2

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

3 个答案:

答案 0 :(得分:18)

在PostgreSQL v8.2及更新版本中,您可以使用RETURNING执行此操作:

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

答案 1 :(得分:2)

您可以在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 docs

答案 2 :(得分:1)

您可以使用存储过程或功能。它将包含您的查询。