MySQL 4.0.14 および 4.1.1
以降では、InnoDB
で SQL コマンド
SAVEPOINT
および ROLLBACK TO
SAVEPOINT
をサポートしています。
SAVEPOINT identifier
このステートメントでは、identifier
に指定した名前を持つトランザクションセーブポイントが設定されます。現在のトランザクションに同名のセーブポイントがすでに存在する場合は、元のセーブポイントが削除され、新しいセーブポイントが設定されます。
ROLLBACK TO SAVEPOINT identifier
このステートメントでは、指定したセーブポイントまでトランザクションがロールバックされます。
セーブポイントの設定後にこのトランザクションでレコードに対して行った変更は、ロールバックによって取り消されますが、InnoDB
では、セーブポイントの後にメモリに格納された行ロックは解除されません(注意:
新たに挿入されたレコードについては、ロック情報はレコードに格納されたトランザクション
ID
によって渡されます。ロック自体が別にメモリに格納されることはありません。この場合、レコードのロックは取消し処理で解除されます)。
指定したセーブポイントより後に設定されたセーブポイントは削除されます。
コマンドで次のエラーが返された場合は、指定した名前のセーブポイントが存在しないことを意味します。
ERROR 1181: Got error 153 during ROLLBACK
セーブポイントを指定しないで
COMMIT
または ROLLBACK
を実行すると、現在のトランザクションのセーブポイントがすべて削除されます。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.