各々のデータベースの SAVEPOINT の違い2021年06月22日 12時05分33秒

SQL コマンドの SAVEPOINT について調べてみた。

SAVEPOINT は BEGIN で始めたトランザクションの最中に戻り点を作る操作。同名の SAVEPOINT を作ると、新しい時点の物が有効になる。SAVEPOINT に戻りたい時は、ROLLBACK TO で戻ることが出来る。また、一般的な実装では、END にてトランザクションを終了すると SAVEPOINT も一緒に消される。

大体のデータベースはこの基本的な動作にそった実装をしているようだ。PostgreSQL、MarinaDB/MySQL 等を筆頭としたオープンソース系もこの実装になっている。

SQLite は独自の拡張が入っていて、SAVEPOINT をトランザクションの外でも作ることが出来る。ほぼスナップショットの様な感じになっている。