疑問
「ROLLBACK TO」文を使って特定のセーブポイントにロールバックした場合、そのセーブポイント以降に作成されたセーブポイントは削除される
というところで、
削除するって物理的に行が削除されるの?
なんで削除されるの?
削除されないとどうなるの?
とたくさんの疑問がわいてきたので、調べた内容を共有します
どのように削除されるのか
「物理的にファイルからその行が削除される」のではなく、発行されたSQLによって設定された SAVEPOINT が論理消去されます。
なんで削除されるのか?
SAVEPOINT まで ROLLBACK すると トランザクションが終了ます。すなわち、そこまでの処理は正常終了しているということです。したがってROLLBACK した SAVEPOINT 以降に設定された SAVEPOINT は不要になるためで消去されます。
削除されないと何か良くないというより、いらないものなので仕様上削除される。という認識です。(間違っていたら修正お願いします)
まとめ
SQLって意外と奥が深いです。。。
Rails使っていた時は、アクティブレコードで勝手にSQL発行されていて意識することはなかったのですが、javaでプログラムするとSQLも書かないといけません。
全部書くので細かいところまで微調整できたり、
なんせすべて自分で書くので、処理の流れが見えてきます。
そのうえSQLは言語が変わっても使えるので、使える人材は重宝されると聞きます。
より学習に気合が入りますね!!!🔥
一緒に頑張りましょう!!