insert insert方法在數據庫(PostgreSQL)的表中插入鏈接,但是如果發生錯誤,其餘的事務會受到影響,不起作用。例外是因爲該字段的URL是唯一的。繼續在Java中有例外的Postgres事務
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çãoatual FOI interrompida,comandos ignorados吃ØFIM做bloco德transação
谷歌的翻譯翻譯,我認爲是正確的:當前事務被中止,命令被忽略,直到交易塊結束爲止
我不知道這是否會導致很大的性能損失,但是在插入每個鏈接之前創建一個保存點,並在失敗的情況下執行roolbackto操作,但事務沒有中止。 – 2011-05-10 21:58:01
@Renato,我很高興它爲你工作。感謝您的複選標記。 – 2011-05-11 02:13:00