0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Oracle なぜセーブポイントは削除されるのか

Posted at

疑問

「ROLLBACK TO」文を使って特定のセーブポイントにロールバックした場合、そのセーブポイント以降に作成されたセーブポイントは削除される

というところで、

削除するって物理的に行が削除されるの?
なんで削除されるの?
削除されないとどうなるの?

とたくさんの疑問がわいてきたので、調べた内容を共有します

どのように削除されるのか

「物理的にファイルからその行が削除される」のではなく、発行されたSQLによって設定された SAVEPOINT が論理消去されます。

なんで削除されるのか?

SAVEPOINT まで ROLLBACK すると トランザクションが終了ます。すなわち、そこまでの処理は正常終了しているということです。したがってROLLBACK した SAVEPOINT 以降に設定された SAVEPOINT は不要になるためで消去されます。
削除されないと何か良くないというより、いらないものなので仕様上削除される。という認識です。(間違っていたら修正お願いします)

まとめ

SQLって意外と奥が深いです。。。

Rails使っていた時は、アクティブレコードで勝手にSQL発行されていて意識することはなかったのですが、javaでプログラムするとSQLも書かないといけません。

全部書くので細かいところまで微調整できたり、
なんせすべて自分で書くので、処理の流れが見えてきます。

そのうえSQLは言語が変わっても使えるので、使える人材は重宝されると聞きます。

より学習に気合が入りますね!!!🔥

一緒に頑張りましょう!!

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?