「START TRANSACTION、COMMIT、ROLLBACK」と
「SAVEPOINT および ROLLBACK TO SAVEPOINT 」
とでは何が違うのですか?
ぱっと見、savepointを設定して好きな所に戻れる方が便利に見えるのですが。
http://dev.mysql.com/doc/mysql/ja/savepoints.html
MySQL 4.1 リファレンスマニュアル :: 6.7.4 SAVEPOINT および ROLLBACK TO SAVEPOINT 構文
savepoint、rollback to savepoint は、1つのトランザクションの中で、任意の点に戻る、
というものです。ですので、start transaction でトランザクションの開始を宣言し、
commit か rollback する前のどこかで savepoint を設定し、rollback to savepoint
で、その場所へ戻る、という使い方になります。トランザクションと無関係に、
戻れる場所を指定できるわけではありません。
PostgreSQL での例ですが、この例を見ると使い方が分かると思います。
start transaction にあたるのが、この例では begin になります。
なるほど。
start transactionしてから、細かくロールバックできる地点を指定できるような感じでしょうか。
ありがとうございました。