teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

暗黙のトランザクションについて追記

2019/11/26 04:25

投稿

tacsheaven
tacsheaven

スコア13707

answer CHANGED
@@ -8,5 +8,5 @@
8
8
  という二つの処理を順番に、確実に行わねばなりません。1. だけやって 2. をやってなかったら大変ですし、1. は成功しても 2. が失敗(口座番号間違ってるとか)したら、1. をやっていないことに戻さねばなりません。
9
9
  こういった一連の分割できない処理を、ひとまとめにして一括で確定/破棄できる仕組みをデータベースではトランザクションと言います。commit は「トランザクションの結果を確定する」ものです。破棄する場合は rollback といいます。
10
10
 
11
- 単なる参照だけの場合はトランザクションは通常は不要(※)なので commit も不要なのですが、慣例的に一連の処理が終わったことを示すために commit を行うことはあるのです。
11
+ 単なる参照だけの場合はトランザクションは通常は不要(※)なので commit も不要なのですが、慣例的に一連の処理が終わったことを示すために commit を行うことはあるのです。(データベースの設定によっては、SELECTした時点で暗黙にトランザクションが開始する場合もあります)
12
12
  ※参照から始まる一連の処理中に「他からそのレコードを弄らせない」という排他処理を行うためにトランザクションを行う場合があります