Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何同时更新和选择_Php_Database_Postgresql_Select - Fatal编程技术网

Php 如何同时更新和选择

Php 如何同时更新和选择,php,database,postgresql,select,Php,Database,Postgresql,Select,我需要更新表中的一些行,然后显示这些行。有没有一种方法可以通过一个查询来实现这一点,并避免这两个查询 UPDATE table SET foo=1 WHERE boo=2 SELECT * from table WHERE ( foo=1 ) AND ( boo=2 ) 您可以使用存储过程或函数。它将包含您的查询。在PostgreSQL v8.2及更高版本中,您可以使用以下方法执行此操作: 可以在PL/pgSQL中使用存储过程。请看[文件][1] 像这样的东西 CREATE FUNCTION

我需要更新表中的一些行,然后显示这些行。有没有一种方法可以通过一个查询来实现这一点,并避免这两个查询

UPDATE table SET foo=1 WHERE boo=2

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

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

在PostgreSQL v8.2及更高版本中,您可以使用以下方法执行此操作:


可以在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;
您将节省发送另一条语句的往返时间。这不应成为性能瓶颈。简单的回答:只需使用两个查询。这很好,在SQL中就是这样做的


[1] :docs

如果你想先做一件事,然后再做另一件事,那么你实际上不是在同时做它们;您可以在更新之前或之后获得查询结果。这仅适用于旧版本,即8.2之前的版本,在返回之前可用。如果只需要一个查询,就不需要对同一数据进行两个查询。没错,但这是一个非标准的SQL功能。你应该意识到这一点。但我还是会发邮件询问。
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;