2011-03-27 33 views
1

我运行一个简单的更新查询,是这样的:Postgres的 - 适应症没有行更新

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

中有一个Postgres的方式来提高错误或打印一些消息时,有没有更新的行?

回答

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 语句,或0 SQL语句 表示不返回任何

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