Postgres - 没有更新行的指示

时间:2011-03-27 11:24:25

标签: postgresql

我正在运行一个简单的更新查询,例如:

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

Postgres中有一种方法可以在没有更新行时引发错误或打印一些消息吗?

1 个答案:

答案 0 :(得分:2)

在数据库中,只有从存储过程执行更新时才可以执行此操作。在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的行数   语句,或者对于SQL语句为0   什么都不返回

     

抛出: SQLException - 如果发生数据库访问错误或者   给定的SQL语句产生一个   ResultSet对象