MySQLのCOMMITとROLLBACKの使い方を完全解説!トランザクションとACIDを初心者向けにわかりやすく解説
生徒
「MySQLを勉強していると、COMMITとかROLLBACKっていう言葉が出てきたんですが、これは何をする命令なんですか?」
先生
「COMMITとROLLBACKは、MySQLのトランザクションという仕組みの中で使われる命令です。データベースの変更を確定するか、それとも元に戻すかを決めるときに使います。」
生徒
「データを確定するってどういう意味ですか?」
先生
「例えば銀行の振り込みのような処理を考えてみましょう。お金を引き出して、別の口座に入れるという二つの処理があります。途中で問題が起きた場合、片方だけ成功すると困りますよね。そんなときに、すべて成功したら確定(COMMIT)、途中で問題が起きたら元に戻す(ROLLBACK)という仕組みを使います。」
生徒
「なるほど!データベースの安全装置みたいなものなんですね。」
先生
「その通りです。MySQLのトランザクションとACIDの考え方を理解するうえで、COMMITとROLLBACKはとても重要な基本操作です。」
1. MySQLのCOMMITとROLLBACKとは?
MySQLでデータベースを操作していると、データの追加、更新、削除などの処理を行います。これらの処理を安全にまとめて管理する仕組みが「トランザクション」です。
トランザクションとは、複数のデータ操作を「ひとつのまとまり」として扱う仕組みです。途中で問題が起きた場合に、処理を元に戻すことができるため、データベースの安全性を高めることができます。
ここで登場するのが、COMMITとROLLBACKです。
- COMMIT:トランザクションの処理を確定する
- ROLLBACK:トランザクション開始前の状態に戻す
MySQLでは、この2つのSQLコマンドを使うことで、データの変更を「確定するか」「取り消すか」を自由に選ぶことができます。
2. トランザクションを開始する方法(START TRANSACTION)
COMMITやROLLBACKを使うためには、まずトランザクションを開始する必要があります。
MySQLでは、次のSQL文を使ってトランザクションを開始します。
START TRANSACTION;
この命令を実行すると、それ以降のデータ変更はすぐに確定されず、トランザクションの中に保存されます。
つまり、COMMITを実行するまでは「仮の変更」の状態になります。もし途中で問題があればROLLBACKで元に戻すことができます。
3. COMMITの使い方(データを確定する)
COMMITは、トランザクション内で行ったデータの変更を正式にデータベースへ保存する命令です。
例えば、ユーザーを追加する処理を考えてみましょう。
実行前のテーブル
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 田中美咲 | 22 | misaki@example.com
START TRANSACTION;
INSERT INTO users (id, name, age, email)
VALUES (5, '高橋健太', 28, 'kenta@example.com');
COMMIT;
実行後のテーブル
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 田中美咲 | 22 | misaki@example.com
5 | 高橋健太 | 28 | kenta@example.com
COMMITを実行すると、トランザクション内の変更が正式に保存されます。
4. ROLLBACKの使い方(変更を元に戻す)
ROLLBACKは、トランザクション内で行った変更をすべて取り消す命令です。
間違ったデータを更新してしまった場合などに役立ちます。
実行前
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 田中美咲 | 22 | misaki@example.com
START TRANSACTION;
UPDATE users
SET age = 99
WHERE id = 2;
ROLLBACK;
実行後(元に戻る)
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 田中美咲 | 22 | misaki@example.com
ROLLBACKを実行すると、トランザクション開始前の状態に戻ります。
まとめ
(振り返りのまとめ)
MySQLのCOMMITとROLLBACKの使い方を完全解説!トランザクションとACIDを初心者向けにわかりやすく解説
生徒
「MySQLを勉強していると、COMMITとかROLLBACKっていう言葉が出てきたんですが、これは何をする命令なんですか?」
先生
「COMMITとROLLBACKは、MySQLのトランザクションという仕組みの中で使われる命令です。データベースの変更を確定するか、それとも元に戻すかを決めるときに使います。」
生徒
「データを確定するってどういう意味ですか?」
先生
「例えば銀行の振り込みのような処理を考えてみましょう。お金を引き出して、別の口座に入れるという二つの処理があります。途中で問題が起きた場合、片方だけ成功すると困りますよね。そんなときに、すべて成功したら確定(COMMIT)、途中で問題が起きたら元に戻す(ROLLBACK)という仕組みを使います。」
生徒
「なるほど!データベースの安全装置みたいなものなんですね。」
先生
「その通りです。MySQLのトランザクションとACIDの考え方を理解するうえで、COMMITとROLLBACKはとても重要な基本操作です。」
1. MySQLのCOMMITとROLLBACKとは?
MySQLでデータベースを操作していると、データの追加、更新、削除などの処理を行います。これらの処理を安全にまとめて管理する仕組みが「トランザクション」です。
トランザクションとは、複数のデータ操作を「ひとつのまとまり」として扱う仕組みです。途中で問題が起きた場合に、処理を元に戻すことができるため、データベースの安全性を高めることができます。
ここで登場するのが、COMMITとROLLBACKです。
- COMMIT:トランザクションの処理を確定する
- ROLLBACK:トランザクション開始前の状態に戻す
MySQLでは、この2つのSQLコマンドを使うことで、データの変更を「確定するか」「取り消すか」を自由に選ぶことができます。
2. トランザクションを開始する方法(START TRANSACTION)
COMMITやROLLBACKを使うためには、まずトランザクションを開始する必要があります。
MySQLでは、次のSQL文を使ってトランザクションを開始します。
START TRANSACTION;
この命令を実行すると、それ以降のデータ変更はすぐに確定されず、トランザクションの中に保存されます。
つまり、COMMITを実行するまでは「仮の変更」の状態になります。もし途中で問題があればROLLBACKで元に戻すことができます。
3. COMMITの使い方(データを確定する)
COMMITは、トランザクション内で行ったデータの変更を正式にデータベースへ保存する命令です。
例えば、ユーザーを追加する処理を考えてみましょう。
実行前のテーブル
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 田中美咲 | 22 | misaki@example.com
START TRANSACTION;
INSERT INTO users (id, name, age, email)
VALUES (5, '高橋健太', 28, 'kenta@example.com');
COMMIT;
実行後のテーブル
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 田中美咲 | 22 | misaki@example.com
5 | 高橋健太 | 28 | kenta@example.com
COMMITを実行すると、トランザクション内の変更が正式に保存されます。
4. ROLLBACKの使い方(変更を元に戻す)
ROLLBACKは、トランザクション内で行った変更をすべて取り消す命令です。
間違ったデータを更新してしまった場合などに役立ちます。
実行前
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 田中美咲 | 22 | misaki@example.com
START TRANSACTION;
UPDATE users
SET age = 99
WHERE id = 2;
ROLLBACK;
実行後(元に戻る)
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 田中美咲 | 22 | misaki@example.com
ROLLBACKを実行すると、トランザクション開始前の状態に戻ります。