|
Home >> FAQs/Tutorials >> MySQL Tutorials >> Index
MySQL FAQs - Transaction Management: Commit or Rollback
By: FYIcenter.com
Part:
1
2
3
4
5
6
7
8
9
10
(Continued from previous part...)
How To Rollback the Current Transaction?
If you have used some DML statements updated some data objects,
you find a problem with those updates, and you don't want those updates to be permanently recorded in the database,
you can use the ROLLBACK command. It will remove all the database changes made in the current
transaction and end the current transaction. The following tutorial
exercise shows you how to use ROLLBACK commands:
>\mysql\bin\mysql -u dev -piyf fyi
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO fyi_links (url, id)
VALUES ('google.com', 102);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO fyi_links (url, id)
VALUES ('myspace.com', 103);
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM fyi_links;
+-----+---------------+-------+--------+--------------------
| id | url | notes | counts | created
+-----+---------------+-------+--------+--------------------
| 101 | fyicenter.com | NULL | NULL | 2006-07-01 20:34:10
| 102 | google.com | NULL | NULL | 2006-07-01 20:37:06
| 103 | myspace.com | NULL | NULL | 2006-07-01 20:37:17
| 110 | centerfyi.com | NULL | NULL | 2006-07-01 20:34:12
+-----+---------------+-------+--------+--------------------
4 rows in set (0.00 sec)
mysql> ROLLBACK;
Query OK, 0 rows affected (0.08 sec)
mysql> SELECT * FROM fyi_links;
+-----+---------------+-------+--------+--------------------
| id | url | notes | counts | created
+-----+---------------+-------+--------+--------------------
| 101 | fyicenter.com | NULL | NULL | 2006-07-01 20:27:49
| 110 | centerfyi.com | NULL | NULL | 2006-07-01 20:28:10
+-----+---------------+-------+--------+--------------------
2 rows in set (0.07 sec)
As you can see, the two new records inserted into the table
were removed by the ROLLBACK command.
What Happens to the Current Transaction If a START TRANSACTION Is Executed?
If you are in a middle of a current transaction, and a START TRANSACTION command is executed,
the current transaction will be committed and ended. All the database changes made in the current
transaction will become permanent. This is called an implicit commit by a START TRANSACTION command.
The following tutorial exercise shows you that the START TRANSACTION command forced the current
transaction to be committed and ended. The subsequent ROLLBACK command had no effects on the closed transaction:
>\mysql\bin\mysql -u dev -piyf fyi
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.01 sec)
mysql> UPDATE fyi_links SET notes='Good', counts=999
WHERE id=101;
Query OK, 1 row affected (0.11 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE fyi_links SET notes='Wrong', counts=0
WHERE id=110;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.04 sec)
mysql> ROLLBACK;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM fyi_links;
+-----+---------------+-------+--------+--------------------
| id | url | notes | counts | created
+-----+---------------+-------+--------+--------------------
| 101 | fyicenter.com | Good | 999 | 2006-07-01 20:34:10
| 110 | centerfyi.com | Wrong | 0 | 2006-07-01 20:34:12
+-----+---------------+-------+--------+--------------------
2 rows in set (0.00 sec)
(Continued on next part...)
Part:
1
2
3
4
5
6
7
8
9
10
|