設定したセーブポイントへのロールバック Savepointssetting and rolling back to

JDBC 3.0のAPIには、Connection.setSavepointメソッドが新たに用意されています。このメソッドは現在のトランザクションにセーブポイントを設定します。 Connection.rollbackメソッドはセーブポイントを引数に取れるよう、オーバーロードされています。より詳細な情報はを参照してください。

以下に例示するコードでは、表に行を挿入してsvpt1というセーブポイントを設定し、さらに二つ目の行を挿入します。トランザクションがsvpt1へロールバックされると、二つ目の挿入は取り消されますが最初の挿入は損なわれません。別の表現をすれば、トランザクションをコミットすると、'1'のを持つ行だけがTABLE1に追加されます。 conn.setAutoCommit(false); // セーブポイントを使うためには自動コミットを切らなければなりません。 Statement stmt = conn.createStatement(); int rows = stmt.executeUpdate("INSERT INTO TABLE1 (COL1) VALUES(1)"); // セーブポイントの設定 set savepoint Savepoint svpt1 = conn.setSavepoint("S1"); rows = stmt.executeUpdate("INSERT INTO TABLE1 (COL1) VALUES (2)"); ... conn.rollback(svpt1); ... conn.commit();