pl/pgsql如果更新成功,则返回true

knp*_*wrs 2 postgresql plpgsql

给定以下骨架pl/pgsql函数,true如果更新成功(某些内容实际更新),如何返回,否则返回false?

CREATE FUNCTION UpdateThingy(
    /* input parameters */
) RETURNS BOOLEAN AS $$
BEGIN
    UPDATE thingies SET /* blah blah */ WHERE /* blah blah */;
    RETURN true;
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

目前这将始终返回true,即使没有更新的行.我希望false在没有行受更新影响的情况下返回.

a_h*_*ame 9

在UPDATE之后,您可以使用手册中描述GET DIAGNOSTICSFOUND状态变量获取更新的行数:

http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-DIAGNOSTICS