トランザクションとは、データベースの処理単位のことです。この方法を指定することで、複数ユーザーからの同時アクセス時の挙動を制御できます。
SQLiteではトランザクションの開始を明示しなかった場合には、データを変更するコマンドが実行されるたびに、自動でトランザクションが開始されます。
トランザクションを開始します。
BEGIN [ DEFERRED | IMMEDIATE | EXCLUSIVE ] -- トランザクションの種類 [ TRANSACTION [ TransactionName ] ] -- トランザクションの名前※[ ]で囲まれた項目は省略可能です。
トランザクションを開始し更新を開始すると、トランザクションをロールバックするためのジャーナルファイル (Journal file) が作成されます。このファイルはデータベース名に-journalという名前を付加したファイル名で作成され、トランザクション開始前のデータベースを保存します。
トランザクション | ロックの種類 |
---|---|
DEFERRED | 共有ロック/予約ロック (読み取り時/書き込み時) |
IMMEDIATE | 予約ロック |
EXCLUSIVE | 排他ロック |
トランザクションを終了し、変更内容を更新します。
COMMIT
[ TRANSACTION [ TransactionName ] ] -- トランザクションの名前
コミット時にデータベースがロックされていた場合には、コミットはリトライされます。
トランザクションを終了し、変更内容を破棄します。ロールバックすることで、データベースはトランザクション前の状態に復元されます。
ROLLBACK
[ TRANSACTION [ TransactionName ] ] -- トランザクションの名前