2011-09-02 25 views

答えて

14

セーブポイントは、現在のトランザクションがロールバックすることができますポイントをマーク。すべての変更を元に戻す代わりに、一部のロールバックのみを選択することもできます。たとえば、あなたがたとします

    がテーブルに10行を挿入
  • 、トランザクションを開始
  • はセーブポイントを設定し、
  • は別の5行、セーブポイントへ
  • ロールバック、
  • を挿入します
  • トランザクションをコミットします。

これを実行すると、挿入した最初の10行がテーブルに含まれます。他の5行はロールバックによって削除されます。

セーブポイントを設定しても、データはデータベースに保存されません。他のトランザクションでデータベースの変更を表示することはありません。セーブポイントは、現在のトランザクションがロールバックできるマーカーに過ぎません。

3
+0

について説明した内容にまで読みたいかもしれないルークの詳細な回答に加えて

。 [http://docs.oracle.com/](http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html#set_roll_back_savepoints)に記載されているように、メソッドConnection.setSavepointは、セーブポイントを設定します現在のトランザクション内のオブジェクト。 'Save.rollbackメソッドはセーブポイント引数をとるためにオーバーロードされています。 ' –

+3

@ ValentinoDell'Aica:私のステートメントで何が間違っていますか?セーブポイント**は** DBMS機能です。 JDBC APIは、単にその機能へのアクセスを提供します。 DBMSがそれらをサポートしていない場合、JDBC内からそれらを使用する方法はありません –