插入或更新如果存在postgres 9.4与jdbc模板

时间:2017-01-20 13:43:11

标签: java sql postgresql upsert

我已经知道PostgreSQL 9.5和更新的支持INSERT ... ON CONFLICT UPDATE,即upsert。虽然,我无法升级我的版本。 所以我在pgAdmin中尝试这个:

do $$
begin 
insert into test(id,description,name) values(10,'','road');
exception when unique_violation then
update function set name = 'newRoad',description='yes' where id =10;
end $$;

它有效但当我尝试将其与jdbc模板集成时,我得到:

java.lang.ArrayIndexOutOfBoundsException: null

通过这样做:

sql.append("DO $$ BEGIN INSERT INTO test(id,description,NAME) VALUES(?,?,?)");
sql.append(" exception when unique_violation then UPDATE SET description=?,");
sql.append(" name=? where id=?");

try {
    jdbcTemplate.update(sql.toString(), new Object[]{id,description,name,description,name,id});
}

我不知道如何处理带有JDBC模板请求的参数,当'

时会出现异常。

0 个答案:

没有答案