发生错误时的Postgresql JDBC驱动程序回滚批处理查询

时间:2018-06-25 13:25:11

标签: java postgresql jdbc

我正在使用JDBC postgresql驱动程序。当向数据库发送批处理查询时,发生错误并且结果仅是使用Statement.Execute_FAILED的数组时,postgres驱动程序会回滚所有内容。

 try (Connection connection = getConnection();
        PreparedStatement stmt = connection.prepareStatement(UPSERT_THESIS)) {
        for (SomeObject d : data) {
            stmt.setString(1, d.getId());
            stmt.setString(2, d.getName());
            stmt.addBatch();
        }
        int[] result = stmt.executeBatch();}

我得到了结果[-3,-3,-3]。自动提交是打开还是关闭都没关系。

在使用其他数据库(如Mysql)时,不会回滚,除了语句发生错误时,所有语句都会被处理并保存在数据库中。所以我得到了混合了Statement.Success_NOINFO和Statement.Execute_FAILED([1,1,-3,1])的结果数组。

此postgres jdbc是否正常?还是我在这里做错了什么?

0 个答案:

没有答案