MySQL 8.0.29でROLLBACKで変更を取り消す方法

環境
Ubuntu 22.04 LTS
MySQL 8.0.29-0ubuntu0.22.04.2

1.トランザクション実行前の状態を確認します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mysql> SELECT * FROM users;
+------+----------+
| id | name |
+------+----------+
| 11 | tokyo |
| 22 | oosaka |
| 33 | yokohama |
+------+----------+
3 rows in set (0.00 sec)
mysql> SELECT * FROM users; +------+----------+ | id | name | +------+----------+ | 11 | tokyo | | 22 | oosaka | | 33 | yokohama | +------+----------+ 3 rows in set (0.00 sec)
mysql> SELECT * FROM users;
+------+----------+
| id   | name     |
+------+----------+
| 11   | tokyo    |
| 22   | oosaka   |
| 33   | yokohama |
+------+----------+
3 rows in set (0.00 sec)

2.トランザクションを実行します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
mysql> BEGIN; Query OK, 0 rows affected (0.00 sec)
mysql>  BEGIN;
Query OK, 0 rows affected (0.00 sec)

レコードを更新します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mysql> UPDATE `users` SET `name` = "tokyo88" WHERE `id` = 11;
Query OK, 1 row affected (1.61 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE `users` SET `name` = "tokyo88" WHERE `id` = 11; Query OK, 1 row affected (1.61 sec) Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE `users` SET `name` = "tokyo88" WHERE `id` = 11;
Query OK, 1 row affected (1.61 sec)
Rows matched: 1  Changed: 1  Warnings: 0

3.レコード更新の確認

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mysql> SELECT * FROM users;
+------+----------+
| id | name |
+------+----------+
| 11 | tokyo88 |
| 22 | oosaka |
| 33 | yokohama |
+------+----------+
3 rows in set (0.00 sec)
mysql> SELECT * FROM users; +------+----------+ | id | name | +------+----------+ | 11 | tokyo88 | | 22 | oosaka | | 33 | yokohama | +------+----------+ 3 rows in set (0.00 sec)
mysql> SELECT * FROM users;
+------+----------+
| id   | name     |
+------+----------+
| 11   | tokyo88  |
| 22   | oosaka   |
| 33   | yokohama |
+------+----------+
3 rows in set (0.00 sec)

4.ROLLBACKを実行します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mysql> ROLLBACK;
Query OK, 0 rows affected (0.46 sec)
mysql> ROLLBACK; Query OK, 0 rows affected (0.46 sec)
mysql> ROLLBACK;
Query OK, 0 rows affected (0.46 sec)

5.ROLLBACK で終了したので、レコードは更新されていません。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mysql> SELECT * FROM users;
+------+----------+
| id | name |
+------+----------+
| 11 | tokyo |
| 22 | oosaka |
| 33 | yokohama |
+------+----------+
3 rows in set (0.00 sec)
mysql> SELECT * FROM users; +------+----------+ | id | name | +------+----------+ | 11 | tokyo | | 22 | oosaka | | 33 | yokohama | +------+----------+ 3 rows in set (0.00 sec)
mysql>  SELECT * FROM users;
+------+----------+
| id   | name     |
+------+----------+
| 11   | tokyo    |
| 22   | oosaka   |
| 33   | yokohama |
+------+----------+
3 rows in set (0.00 sec)

 

MySQL

Posted by arkgame