What is Transaction like?
コンピュータ内で実行される、分けることのできない一連の情報処理の一単位。
トランザクション処理における永続性記憶資源の管理では、複数のデータ項目の更新操作列をすべて実行するか、まったく実行しないように制御する必要がある。
ACID 標準
また、トランザクション処理システムは 4 つの属性の機能をサポートしており、頭文字から ACID 標準という。
- A : Atomic 不可分性
- C : Consistency 一貫性
- I : Isolation 独立性
- D : Durability 永続性
実際に動かしてみる
DB内で操作
MySQL はデフォルトで、自動コミットモードが有効になった状態で動作し、実行するとすぐに、ディスクに格納されて永続的になります。この変更はロールバックできない。
自動コミットモードを暗黙的に無効にするには、START TRANSACTION をし、その後、COMMIT または ROLLBACK で終了するまで、自動コミットは無効のままになります。そのあと、自動コミットモードはその以前の状態に戻ります。
実作業
今回は MySQL と、以前に作成した大学生徒データ App のデータを再利用する
COMMITするパターン
ROLLBACKするパターン
try on RubyonRails
新しく、アプリを作成する。今回は DB の操作だけなので、rails g model コマンドのみ使用。テーブルは User と Review の2つ。
DB 内で確認
user と review との、関連付け
review モデルに validation 追加
approved カラムを空欄不可にしておく。
コンソールで、トランザクション処理の挙動を確認
トランザクション処理に成功し、commit されるパターン
user テーブルの id1 の taro-1 が、更新されてる
トランザクション処理に失敗し、rollback されるパターン
トランザクション処理に失敗し、rollback したため、DB に変化はない。
modelファイルを編集して実装
参照