トランザクション処理 BEGIN,COMMIT,ROLLBACK

トランザクションの最後でROLLBACKを実行してBEGIN以降のSQL文は実行しなかったことになる。

mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO t_hanbai VALUES
    -> (9,'2005-08-10','1001','100001',5);
Query OK, 1 row affected (0.00 sec)

mysql> UPDATE t_syohin SET zaikosu = zaikosu - 5
    -> WHERE shcd = '100001';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> ROLLBACK;
Query OK, 0 rows affected (0.02 sec)

mysql> select * from t_hanbai;
+----+------------+------+--------+-------+
| id | ndate      | tkcd | shcd   | suryo |
+----+------------+------+--------+-------+
|  1 | 2005-07-11 | 1001 | 100001 |    10 |
|  2 | 2005-07-12 | 1001 | 100101 |     3 |
|  3 | 2005-07-12 | 1002 | 100201 |     5 |
|  4 | 2005-07-21 | 1003 | 100A01 |     7 |
|  5 | 2005-07-22 | 1005 | 100B01 |     2 |
+----+------------+------+--------+-------+
5 rows in set (0.00 sec)

最後でCOMMITを実行して更新が反映される

mysql> INSERT INTO t_hanbai VALUES
    -> (9,'2005-08-10','1001','100001',5);
Query OK, 1 row affected (0.00 sec)

mysql> UPDATE t_syohin SET zaikosu = zaikosu - 5
    -> WHERE shcd = '100001';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> ROLLBACK;
Query OK, 0 rows affected (0.02 sec)

mysql> select * from t_hanbai;
+----+------------+------+--------+-------+
| id | ndate      | tkcd | shcd   | suryo |
+----+------------+------+--------+-------+
|  1 | 2005-07-11 | 1001 | 100001 |    10 |
|  2 | 2005-07-12 | 1001 | 100101 |     3 |
|  3 | 2005-07-12 | 1002 | 100201 |     5 |
|  4 | 2005-07-21 | 1003 | 100A01 |     7 |
|  5 | 2005-07-22 | 1005 | 100B01 |     2 |
+----+------------+------+--------+-------+
5 rows in set (0.00 sec)