12章トランザクション

本書のここまでの例はすべて単体の独立したSQL文でした。臨時の報告書の作成やデータメンテナンススクリプトではあたりまえのことかもしれませんが、アプリケーションのロジックには、1つの論理的な作業単位としてまとめて実行しなければならない複数のSQL文が含まれていることがよくあります。そこで本章では、トランザクション(transaction)に着目します。トランザクションは複数のSQL文をグループ化するためのメカニズムであり、それらの文はすべて成功するかすべて失敗するかのどちらかになります。

12.1 マルチユーザーデータベース

データベース管理システム(DBMS)では、1人のユーザーがクエリを実行したりデータを変更したりできますが、最近では、数千人もの人々が同時にデータベースに変更を加えることがあります。業務時間中のデータウェアハウスのように、すべてのユーザーがクエリを実行するだけであるとしたら、データベースサーバーが対処しなければならない問題は数えるほどしかありません。しかし、一部のユーザーがデータの追加や変更を行うとしたら、データベースサーバーが対処しなければならない問題は一気に増えることになります。

たとえば、今週のレンタル状況をまとめたレポートを作成しているとしましょう。ところが、レポートを作成している最中に次の出来事が発生します。

  • 顧客が映画をレンタルする。
  • 顧客が返却予定日を過ぎてから映画を返却し、延滞料金を支払う。
  • 新しい映画が5本入荷する。

レポートを作成している最中に複数のユーザーがデータベースのデータを変更した場合、レポートに表示する数字はいくつにすべきでしょうか。その答えはデータベースサーバーがロック(lock)をどのように処理するかによって少し変わってきます。 ...

Get 初めてのSQL 第3版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.