pl / pgsql Возвращает true, если обновление прошло успешно - PullRequest
2 голосов
/ 04 февраля 2012

Учитывая следующую скелетную функцию 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;

В настоящее время это всегда будет возвращать true, даже если строки не были обновлены. Я хочу вернуть false, если обновление не затронет ни одной строки.

1 Ответ

9 голосов
/ 04 февраля 2012

После ОБНОВЛЕНИЯ вы можете получить количество обновленных строк, используя GET DIAGNOSTICS или переменную состояния FOUND, как описано в руководстве:

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

...