トランザクションで処理をコントロールする

トランザクションとは?

SQL Server のトランザクションとは、一連の処理単位のことです。

トランザクション内の処理は、全てが成功した時のみ確定されます。

処理の途中でエラーが起きた場合は、そこまでの処理をロールバックして、トランザクション処理実行前の状態まで戻ります。

SQL Server では、明示的に複数の処理をひとつのトランザクションとして扱うことが可能です。


トランザクションは、データの整合性を保つのにとても大事です。

例えば、ある商品の入荷処理の確定ボタンクリック時に次のような一連の処理がしたいとします。

1. 入荷データの保存する
2. 入荷した商品の在庫数を増やす
3. 入荷した商品の平均単価を再計算する

1 の入荷データを保存した後で、2 でエラーが起きた場合、トランザクションとして扱っていなければ、入荷されたはずなのに在庫がない! ということになってしまいます。

また、その状態で、再度確定ボタンをクリックすると、既に入荷データが保存されている状態で保存できなかったり、もしくは入荷データが二重に入ってしまったり、というような問題もおきかねません。


複数箇所から同じデータに対して更新を行う可能性がある場合も、トランザクションを制御することによって、一連の処理中は他からの更新を防ぐことができます。

ネットワークなどの問題で、処理の途中でデータベースへの接続が切断されたようなケースでも、トランザクションとして扱っていればロールバックしてくれます。

ですので、一連の処理として、複数の挿入・更新・削除スクリプトを実行したい場合には、明示的にトランザクションを定義しておくとよいと思います。


次回は実際にトランザクションを使って制御してみましょう。

© 2010-2024 SQL Server 入門