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;