3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

トランザクションについての例を3つ

Last updated at Posted at 2019-11-21

##はじめに

トランザクションについての学習をしている中で、例えると何だろうと・・となったので
出てきた3パターンを残しておくことにします。

##トランザクションとは
データを操作する上で、必要な複数の処理のまとまりのことをトランザクションという。
データベースのデータの整合性を担保するために、適切なトランザクション処理が必要。

##例1
Aさんの銀行口座からBさんの銀行口座へ送金する処理、というよく例えに出ているものを
実際のテーブルなどになぞらえてみる。

usersテーブルとprofilesテーブルがあり、
この2つどちらも操作をしないと変更や新規作成ができないとする。

どっちかが失敗したら変更操作をする前に戻るということ(ロールバック)
どっちも成功しないとコミットしない(確定されないということ)

スクリーンショット 2019-11-21 20.08.32.png

##例2
CSVファイルのインポート
データのあるカラムの数だけINSERTする必要があるため、トランザクションが必ず必要。
途中でうまく行かなかった場合、すでに取り込んだものも無かったことにする。
(まだデータがあるかという部分は、ifやループで回している)

スクリーンショット 2019-11-21 20.20.29.png

##例3
オークションのとき。
1つのテーブルの1つのカラムを更新していっているイメージ。

Aさんが先に入札をした場合、同タイミングで入札しようとしていたBさんにはロックがかかってしまう。
つまり待ち時間が発生してしまう。
Aさんが入札し終わり、コミットされた時にやっとBさんは現在の商品価格が見れるようになる。

一つのテーブルの1つのカラムをUPDATEしていっているイメージ。
あまりないかも?

スクリーンショット 2019-11-21 19.53.18.png
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?