我正在运行一个简单的更新查询,例如:
UPDATE some_table SET columnA = 'value' WHERE columnB = 'other value'
Postgres中有一种方法可以在没有更新行时引发错误或打印一些消息吗?
答案 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对象