What Happens to the Current Transaction If a DDL Statement Is Executed

Q

What Happens to the Current Transaction If a DDL Statement Is Executed? - MySQL FAQs - Transaction Management: Commit or Rollback

✍: FYIcenter.com

A

If a DDL statement 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 DDL statement.

The following tutorial exercise shows you that the CREATE TABLE statement 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> INSERT INTO fyi_links (url, id)
   VALUES ('oracle.com', 112);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO fyi_links (url, id)
   VALUES ('mysql.com', 113);
Query OK, 1 row affected (0.00 sec)

mysql> CREATE TABLE fyi_temp AS (SELECT * FROM fyi_links);
Query OK, 4 rows affected (0.22 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> ROLLBACK;
Query OK, 0 rows affected, 1 warning (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
| 112 | oracle.com    | NULL  |   NULL | 2006-07-01 20:41:12
| 113 | mysql.com     | NULL  |   NULL | 2006-07-01 20:41:21
+-----+---------------+-------+--------+--------------------

2007-05-11, 5743👍, 0💬