2011-03-27 38 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對象