Postgres - индикация отсутствия строк обновлена - PullRequest
1 голос
/ 27 марта 2011

Я выполняю простой запрос на обновление, что-то вроде:

UPDATE some_table SET columnA = 'value' WHERE columnB = 'other value'

Есть ли в Postgres способ вызвать ошибку или напечатать какое-нибудь сообщение, если строки не обновлены?

1 Ответ

2 голосов
/ 27 марта 2011

В базе данных это возможно только при выполнении обновления из хранимой процедуры.В plpgsql:

BEGIN
    UPDATE some_table SET columnA = 'value' WHERE columnB = 'other value'
    IF NOT FOUND THEN
        raise exception 'Nothing updated'; 
    END IF;
END

Однако значение не зарегистрировано, но команда отменена.Если вы просто хотите, чтобы он регистрировался, используйте вместо него raise warning и установите в журнале postgresql предупреждения:

Если вы используете API для доступа к PostgreSQL, у вас обычно есть функция, которая возвращает количество обновленных значений.Например, в Java есть класс Statement с функцией executeUpdate ():

public int executeUpdate(String sql)
                  throws SQLException

Выполняет заданный оператор SQL, который может быть оператором INSERT, UPDATE или DELETE или оператором SQL, которыйничего не возвращает, например SQL-оператор DDL.

Параметры: sql - оператор SQL INSERT, UPDATE или DELETE или оператор SQL, который ничего не возвращает

Возвращает: либо количество строк для операторов INSERT, UPDATE или DELETE, либо 0 для операторов SQL, которые ничего не возвращают

Броски: SQLException - если ошибка доступа к базе данных происходит, или данный оператор SQL производит объект ResultSet

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...