[SQL] SAVEPOINT

SAVEPOINT文を使用すると トランザクション内でロールバックされる位置を指定できる

SAVEPOINT SAVEPOINT_NAME;

同一トランザクション内のセーブポイント名は 区別する必要がある
同じ識別子のSAVEPOINTを作成した場合、最初のセーブポイントは消去される

セーブポイントを作成した後は 以下を実行できる
-処理の継続
-作業のコミット
-トランザクション全体のロールバック/セーブポイントまでのロールバック

ex

UPDATE HOGE_TBL SET COL1 = AAA WHERE COL2 = 'COL2_VAL';
SAVEPOINT SP1;
UPDATE HOGE_TBL SET COL1 = AAA WHERE COL2 = 'COL2_VAL2';
SAVEPOINT SP2;
ROLLBACK TO SAVEPOINT SP1;
COMMIT;

OracleMySQLでは、複数のセーブポイントを作成できるが、
 DB2では、複数のセーブポイントは作成できない。


ref:
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19201-02/statements_10.html
http://www.i2kt.com/sql/sql_01031901.html

tag : Oracle MySQL DB2 SAVEPOINT

2009-03-18 00:06 : 開発 : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud