我需要更新一些表格的行并显示这些行。有没有一种方法可以用一个查询完成这个操作,避免使用两个查询?
UPDATE table SET foo=1 WHERE boo=2
SELECT * from table WHERE ( foo=1 ) AND ( boo=2 )
我需要更新一些表格的行并显示这些行。有没有一种方法可以用一个查询完成这个操作,避免使用两个查询?
UPDATE table SET foo=1 WHERE boo=2
SELECT * from table WHERE ( foo=1 ) AND ( boo=2 )
在 PostgreSQL 版本 8.2 及更高版本中,您可以使用 RETURNING
来实现此操作:
UPDATE table
SET foo=1
WHERE boo=2
RETURNING *
您可以在PL/pgSQL中使用存储过程。请参考[文档][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;
您可以使用存储过程或函数。它将包含您的查询。