SAVEPOINT (SQL)
SAVEPOINTは、サブトランザクション(入れ子トランザクションとも呼ばれる)を実現するための、データベース言語SQLの�…
SAVEPOINTは、サブトランザクション(入れ子トランザクションとも呼ばれる)を実現するための、データベース言語SQLのステートメントの1つである。トランザクション内の特定の地点に名前を付け、その地点以前に行った処理に影響を及ぼすことなく、その地点以降に行った処理をロールバックできる。1つのトランザクション内で複数の SAVEPOINT を作成することもできる。
SAVEPOINTはデータベースを利用するアプリケーションで、複雑なエラー復帰処理を実現するのに有効である。複数のステートメントから成るトランザクションの途中でエラーが発生した場合、SAVEPOINTを利用すると、トランザクション全体をロールバックすることなく、エラーから復帰することができる。
SAVEPOINT の使用例を以下に示す。SAVEPOINT name で地点に名前を付け、
ROLLBACK TO SAVEPOINT name でロールバックする。設定した SAVEPOINT は RELEASE SAVEPOINT name またはトランザクションの終了時に解放される。
BEGIN;
INSERT INTO tbl VALUES (1);
SAVEPOINT savepoint_example;
INSERT INTO tbl VALUES (2);
ROLLBACK TO SAVEPOINT savepoint_example;
INSERT INTO tbl VALUES (3);
COMMIT;
-- 1 と 3 が挿入された状態になる。
SAVEPOINT は標準SQLにも採用されており、PostgreSQL, Oracle Database, Microsoft SQL Server(SAVE TRAN[SACTION] nameの書式), MySQL, DB2, SQLite (3.6.8 以降), Firebird, Informix Dynamic Server (11.50xC3 以降) など、多くの関係データベース管理システムがサポートしている。
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.