Mr.Tです、こんにちは。
今回は、すごく当たり前といえば、当たり前のことだけどという点について。
SQLServerは、データベースに対して直接クエリの発行ができます。SQLServer2005なら、Management Studio上
でできるし、SQLServer2000ならクエリアナライザで行えますね。
#コマンドラインでもできるんだっけ>osql
データベースといえばトランザクションを利用するのは当たり前。詳しい動作はいろんな説明が世の中にあって、
色々と調べられます。
だけど、初歩の初歩的な、「ほんとーにトランザクションかけて、ロールバックやコミットの効果を実感した?」
仕組みは説明できるよね、で、コーディングルールもあるし、先輩/上司も教えてくれるから、トランザクションは
問題ないっすよねー。
でも、実際にロールバックで戻ってくれてるところは、みたことねーよな。エラーでロールバック処理は書いてるけどさ。
なんて人いません?
#実は暗黙的に、んなのロールバックのテストなんかしねーよ、といってるわけですが。
いや、待て。それじゃあ、つまんねーだろ。ということで、ちょー簡単実践。
一番わかりやすくて感動なのは、ロールバック処理で、それまでの更新が元に戻ってるヨ!というやつでしょう。
(SQLServer2005のManagement Studio Expressで確認してますが、2000でも同じです。)
まずは、ツールバーから、「新しいクエリ」でウィンドウを開きます。
Selectで確認。
はい、ではそのまま、Select文の上に、トランザクション宣言とDelete文を追加します。
で、ばっさり消して、再度確認したところ。
消えてますね。ちゃんと消えてます。ここで、注意!
このクエリのウィンドウ、×ボタンで閉じちゃだめです!
で、そのまま、Begin TranとDeleteを消して、 Rollbackを記述しましょう。
簡単に確認できるんですねぇ。
もどったでしょ? Rollbackの代わりに、Commit Tranとすれば、きちんとコミットされるんですね。
これの応用というか、消されちゃった間でコミットやロールバックされるまでに、他の人がSelectしたらどーなんの?とかの確認や、
いきなり×ボタンでウィンドウおとしちゃったらどうなるの?とか、色々実感できて遊べるじゃないんでしょうか。