For many people, the MySQL Achilles' heel is implicit commit.

According to Page 418 Paragraph 3 of [the Book][1]

![MySQL 5.0 Certification Study Guide][2]

the following commands can and will break a transaction

- `ALTER TABLE`
- `BEGIN`
- `CREATE INDEX`
- `DROP DATABASE`
- `DROP INDEX`
- `DROP TABLE`
- `RENAME TABLE`
- `TRUNCATE TABLE`
- `LOCK TABLES`
- `UNLOCK TABLES`
- `SET AUTOCOMMIT = 1`
- `START TRANSACTION`

#SUGGESTION

When it comes to MySQL, any ContinuousIntegration/SelfService jobs you construct should always make Transactional jobs and DDL scripts mutually exclusive. 

This gives you the opportunity to create paradigms that would

- support transactions that are properly isolated with `START TRANSACTION/COMMIT` blocks
- control of DDL by scripting the DDL yourself, running such DDL as either constructor or destructor
 - Constructor : DDL to make Tables with a New Design
 - Destructor : DDL to make Tables Revert Back to Previous Design
- never combine this operations under one job

**WARNING :** If you are using MyISAM for any this, you can (un)kindly add MyISAM to the list of things that can break a transaction, maybe not in terms of implicit commit, but definitely in terms of data consistency should a rollback every be needed.

  [1]: http://www.amazon.com/MySQL-5-0-Certification-Study-Guide/dp/0672328127
  [2]: https://i.sstatic.net/HIwcW.jpg