検索
連載

トランザクション処理をさらっとマスターしようさらっと覚えるSQL&T-SQL入門(12)(3/3 ページ)

アプリケーション開発でデータベースを利用する新人プログラマに向けて、SQLおよびT-SQLを短期間で理解できるよう、開発現場ですぐに必要となる内容を中心に解説する。(編集部)

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

トランザクションを組み込んだストアドプロシージャの作成

 ストアドプロシージャの作成にあたって利用するデータベースはいつもと同じ、SQL Server 2005のサンプルデータベースであるAdventureWorksを利用します。

 今回作成するストアドプロシージャは、「Employee」および「Contact」テーブルから氏名、役職を取り出し、データを新しいテーブルに挿入していく、という内容です。

テーブルの作成

 ストアドプロシージャ作成の前に、次の内容のテーブルをAdventureWorksに加えてください。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

ストアドプロシージャの作成、実行

 続いて、ストアドプロシージャの作成に入りましょう。

 作成するストアドプロシージャは、前回の記事で作成したサンプルを拡張した内容になっているため、前回のサンプルが残っている方は、その内容を拡張しても良いでしょう。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 作成したストアドプロシージャを実行すると、TranTestテーブルに対してデータの追加が行われます。

ロールバック処理の検証

 ここでは、実際にロールバックが正しく動作しているか確認するために、TranTestに対して手入力で次のデータを登録してから、プロシージャを実行してみましょう。手入力したデータによって、ストアドプロシージャ実行時にPRIMARY KEY違反が発生するはずです。

列名
EmployeeID 77
FirstName atmark
LastName IT
Title WebMaster

 上記データがTranTestに存在する状態でストアドプロシージャを実行すると、次のような結果となります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 PRIMARY KEY違反が発生し、ロールバックが行われています。実際にTranTestを確認してみると、1行もデータが追加されていないことが確認できます。

 TranTestからデータを消去したうえで再度ストアドプロシージャを実行すると、処理が正常に終了し、INSERT文によるデータ追加がすべてコミットされます。

まとめ

 以上のように、トランザクションを利用することによって、一連の処理を1つのまとまりとして扱い、データの整合性を保ちながらデータの更新処理を行うことができます。複数のDML文を発行するような場合は必須と言える技術であるため、その特性をしっかりと把握しておきましょう。


 とうとうこの連載も、これで最後のまとめになります。1年前から始まった本連載ですが、読者のみなさんの学習の助けになったでしょうか?

 SQLはとても奥が深く、それでいてとても使いやすい言語です。難しい概念や難解な構文もたくさんありますが、実際に手で書き、目で動きを追ってみると、理解できないものではありません。本連載をきっかけとして、みなさんがSQLを極める最初の一歩となれば幸いです。

 1年間ご愛読ありがとうございました! それでは、また新しい記事でお会いしましょう!(連載完)

筆者プロフィール

石橋潤一
株式会社システムインテグレータ勤務。Web+DBの業務アプリをメインに開発に携わる。@IT連載記事「SQL Server 2005を使いこなそう」「SQL Server 2005 CTPレビュー」執筆のほか、著書に『DBマガジン別冊 SQL Server 2005徹底活用ガイド』(翔泳社刊/共著)、『ASP.NET+SQL Server ゼロからはじめるWebアプリケーション』(ソフトバンクパブリッシング刊/共著)。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る