簡體   English   中英

發生異常時准備好的語句批處理的行為

[英]Behaviour of Prepared Statement Batch when Exception occurs

我正在使用Java Prepared Statements Batch將多個行插入數據庫中。 有時在批處理中有兩個具有相同主鍵值的相同插入語句,這會引發異常,這是正常的。 我的問題是在異常之前插入的數據會怎樣? 應該插入(提交)還是觸發回滾? 我找不到與此有關的任何文檔。

我已經對一批相同的兩個SQL插入進行了一些實驗。 這是偽代碼:

int[] inserted;
PreparedStatement PreparedStatementInsert ... prepared with two identical SQL inserts.

try {
    inserted = PreparedStatementInsert.executeBatch();
} catch (BatchUpdateException e) {
    // program enters this part
    inserted = e.getUpdateCounts();
}

在我的實驗中,執行catch塊,並且插入的數組中有一個元素insert [0] =1。從文檔中我得出結論,一個(第一個)INSERT成功完成,而第二個則沒有成功。 但是,當我查看數據庫時,它是空的,好像沒有完成INSERT一樣。 是否有一些文檔或對此行為的解釋? 我正在將Java 6與Postgres 9.0數據庫一起使用。

您必須對您的PreparedStatement對象使用addBatch()方法,即PreparedStatementInsert1.addBatch(),PreparedStatementInsert2.addBatch().. PreparedStatementInsertN.addBatch()

然后,您必須使用PreparedStatementInsert.executeBatch();。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM