MariaDB トランザクションのステートメントROLLBACKの動作確認サンプル

環境
OS Windows 10 Home 64bit
MariaDB 10.6.4

書式
BEGIN または START TRANSACTION でトランザクションを開始します。
ROLLBACK でトランザクションを終了します。変更はとりけされます。

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
MariaDB [testdb]> select * from deptbl;
+-------+---------------+
| depid | depname |
+-------+---------------+
| 1001 | sysengineer |
| 1002 | sysengineer |
| 1003 | sysengineer |
| 1003 | inforengineer |
+-------+---------------+
4 rows in set (0.377 sec)
MariaDB [testdb]> select * from deptbl; +-------+---------------+ | depid | depname | +-------+---------------+ | 1001 | sysengineer | | 1002 | sysengineer | | 1003 | sysengineer | | 1003 | inforengineer | +-------+---------------+ 4 rows in set (0.377 sec)
MariaDB [testdb]> select * from deptbl;
+-------+---------------+
| depid | depname       |
+-------+---------------+
|  1001 | sysengineer   |
|  1002 | sysengineer   |
|  1003 | sysengineer   |
|  1003 | inforengineer |
+-------+---------------+
4 rows in set (0.377 sec)

2.トランザクションを実行します。
更新SQLを実行します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
MariaDB [testdb]> update deptbl set depname='admin' where depid='1001';
Query OK, 1 row affected (0.747 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [testdb]> update deptbl set depname='admin' where depid='1001'; Query OK, 1 row affected (0.747 sec) Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [testdb]> update deptbl set depname='admin' where depid='1001';
Query OK, 1 row affected (0.747 sec)
Rows matched: 1  Changed: 1  Warnings: 0

「ROLLBACK」を実行します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
MariaDB [testdb]> ROLLBACK;
Query OK, 0 rows affected (0.338 sec)
MariaDB [testdb]> ROLLBACK; Query OK, 0 rows affected (0.338 sec)
MariaDB [testdb]> ROLLBACK;
Query OK, 0 rows affected (0.338 sec)

3.再度検索確認

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
MariaDB [testdb]> select * from deptbl;
+-------+---------------+
| depid | depname |
+-------+---------------+
| 1001 | sysengineer |
| 1002 | sysengineer |
| 1003 | sysengineer |
| 1003 | inforengineer |
+-------+---------------+
4 rows in set (0.001 sec)
MariaDB [testdb]> select * from deptbl; +-------+---------------+ | depid | depname | +-------+---------------+ | 1001 | sysengineer | | 1002 | sysengineer | | 1003 | sysengineer | | 1003 | inforengineer | +-------+---------------+ 4 rows in set (0.001 sec)
MariaDB [testdb]> select * from deptbl;
+-------+---------------+
| depid | depname       |
+-------+---------------+
|  1001 | sysengineer   |
|  1002 | sysengineer   |
|  1003 | sysengineer   |
|  1003 | inforengineer |
+-------+---------------+
4 rows in set (0.001 sec)

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

MariaDB

Posted by arkgame