DBのトランザクションの概念を知り、コードでも確認する

2020/09/04 07:22

DBのトランザクションについて概念とコードで理解しましょう。まず「変更したい内容をひとまとめに操作できるようにする」という機能についてホワイトボードの説明で概念理解します。後半はRuby on Railsのコードを弄って確認します。実際に困ってしまうケースを再現して、その上でトランザクションで困りごとを解決しています。概念解説は10分未満、実際に操作してみる実践は15分未満の動画です。

トランザクションとは

DBへの複数の変更処理を「全部の操作が成功したら保存、一つでも失敗したら全てを無かった事にする」という機能です。二つ以上の情報が整合していないと困る場合に利用するDBの機能です。

WEBのシステムを作成している時は、1つのリクエスト中に行う複数の変更処理は1つのトランザクションとして処理することが多いです。「リクエストの途中で処理が失敗しても、全てリクエスト前の状態に戻っている」という形を実現します。

言葉

コミット

処理が全部正常に終わった際にDBに全て保存する事を確定するコマンドです。

ロールバック

処理が正常に終わらなかった際に、DBに全てを無かった事にしてもらうコマンドです。コミットしない場合はロールバックを行って無かった事にします。

実際に使うシーン

最近は自分でコミットやロールバックを明示的に呼び出さなくても良いケースがあります。フレームワークなどが「トランザクション中に例外が発生したらロールバック」などのように仕組みを作ってくれているので、自分でロールバックを呼び出さなくても自動的に処理が行われる事は多いです。

この記事を書いた人

佐藤 正志

サークルアラウンド株式会社 代表取締役