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 


Selected Developer Jobs:

More...