- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:トランザクションについて)
トランザクションについての違いと注意点
このQ&Aのポイント
- MySQLバージョン4.1.16を使用している際、トランザクションを2つに分けて行う場合と1つで済ませる場合の違いや注意点について説明します。
- 1つのトランザクションで処理を完了させる場合は望ましいですが、2つに分ける必要がある場合には注意点があります。
- 2つのテーブルを更新する必要がある場合でも、1つのトランザクションで処理を行うことができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
トランザクションとは複数の更新を論理的にひとまとまりとしたい処理を行う場合に利用します。 START TRANSACTION; UPDATE table1 SET a=1 WHERE type=1; UPDATE table2 SET b=1 WHERE type=1; COMMIT; →こちらはtable1の更新とtable2の更新をひとまとまりとして扱います、片方だけが更新されることはなく、両方更新するか、両方とも更新されないかのどちらかです。 START TRANSACTION; UPDATE table1 SET a=1 WHERE type=1; COMMIT; START TRANSACTION; UPDATE table2 SET b=1 WHERE type=1; COMMIT; →こちらはtable1の更新とtable2の更新が別のまとまりとなっている場合です。 table1のcommitの後で処理が中断した場合はtable1は更新後、table2は更新前のままといった状態になります。 これらはプログラムの都合でどちらかを決めるのではなく、対象業務がどのような仕組みを求めているのかで決まります。 よくある例えですが、預金口座からほかの口座へお金を移すような処理の場合、ある口座の引き落としと移す先の口座への加算は1つのトランザクションとして扱わないと不整合が発生する可能性があります。
お礼
ご返答ありがとうございます。 なるほど、処理が関係するテーブルの処理は纏めた方が良さそうですね。