【PHP8.x】SAVEPOINT定数の使い方
SAVEPOINT定数の使い方について、初心者にもわかりやすく解説します。
作成日: 更新日: 
基本的な使い方
SAVEPOINT定数は、PHPのSQLite3拡張機能に直接定義された値ではありませんが、データベースのトランザクション制御における「セーブポイント」という重要な概念を指し示す用語を表すものです。セーブポイントは、BEGINコマンドで開始されたトランザクションの途中に、名前付きの目印を作成する機能です。これにより、トランザクション全体を取り消すだけでなく、特定の中間地点まで処理を巻き戻すことが可能になります。例えば、複数のデータ更新処理を一つのトランザクションで行う際に、途中でエラーが発生した場合でも、トランザクションを開始する前の状態に戻すのではなく、直前のセーブポイントまでロールバックして処理を再試行するといった、より柔軟なエラーハンドリングが実現できます。PHPのコードからは、SQLite3::exec()メソッドを用いてSAVEPOINT a;やROLLBACK TO a;といったSQL文を直接実行することで、このセーブポイント機能を利用します。複雑なデータベース操作の信頼性と安全性を高めるために不可欠な仕組みです。
構文(syntax)
1<?php 2 3$db = new SQLite3(':memory:'); 4$db->exec('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)'); 5 6$db->exec('BEGIN TRANSACTION'); 7$db->exec("INSERT INTO users (name) VALUES ('Alice')"); 8 9// トランザクション内にセーブポイントを設定します 10$db->exec('SAVEPOINT sp1'); 11 12$db->exec("INSERT INTO users (name) VALUES ('Bob')"); 13 14// 'sp1'セーブポイントの時点までロールバックします 15// この操作により 'Bob' の挿入は取り消されます 16$db->exec('ROLLBACK TO sp1'); 17 18$db->exec('COMMIT'); 19 20?>
引数(parameters)
戻り値(return)
戻り値なし
戻り値はありません