我是 Postgres 的新手。我正在尝试使用 java/postgres jdbc 执行以下代码(适用于 MySQL):
for (int i = 0; i < arr.size(); i++)
{
dtoIdent ident = arr.get(i);
stIns.setLong(1, idInterface);
stIns.setString(2, tipo);
try { stIns.executeUpdate(); }
catch (SQLException sqe)
{
stUpd.setString(1, ident.getTipo());
stUpd.executeUpdate();
}
}
连接在 autcommit = false 中。 “stIns”和“stUpd”是“PreparedStatements”。
我得到一个 25P02。
可以用 Postgres 做到这一点吗?任何解决方法?
非常感谢,
琼。
最佳答案
由于您的自动提交是错误的,并且您的语句被中止,您必须回滚连接,因为它现在处于无效状态。
在您的 catch block 中,在使用 executeUpdate 之前只需执行此操作:
conn.rollback();
然而,这将回滚之前在事务中完成的所有更改。如果这是一个问题,那么您应该在 try 语句之前使用 conn.setSavepoint() 创建一个保存点,然后在 catch block 中回滚到该保存点。
关于java - POSTGRES::在插入 SQLException 时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18768676/