【发布时间】:2011-05-10 19:34:14
【问题描述】:
下面的insert方法在数据库(PostgreSQL)的一个表上插入链接,但是如果发生错误,其余的事务都会受到影响并且不起作用。例外是因为字段 URL 是唯一的。
在 PostgreSQL 中是否有可能在出现异常的情况下继续事务?
for (int i = 0, n = page.getLinks().length; i < n; i++) {
linkBD.insert(page.getLink(i), idPage);
}
public boolean insert(Link link, int idPage) {
try {
String sql = "INSERT INTO link (id,idPage,url,linkText,"
+ "visited,broken) VALUES(nextval('idLinkSqc'),?,?,?,?,?)";
PreparedStatement pstm = Conn.conn.prepareStatement(sql);
pstm.setInt(1, idPage);
pstm.setString(2, link.getUrl());
pstm.setString(3, link.getLinkText());
pstm.setBoolean(4, false);
pstm.setBoolean(5, false);
pstm.execute();
Conn.commit();
pstm.close();
return true;
} catch (Exception e) {
System.out.println("Erro inserindo link no banco de dados: " + e.getMessage());
System.out.println("Erro no link: "+link.getUrl());
return false;
}
}
葡萄牙语中的错误消息:transação atual foi interrompida, comandos ignorados até o fim do bloco de transação
我认为谷歌翻译的翻译是对的:当前事务被中止,命令被忽略,直到事务块结束
【问题讨论】:
标签: java exception postgresql transactions