SAVEPOINT, ROLLBACK TO SAVEPOINT, and RELEASE SAVEPOINT Statements CREATE DATABASE ,  CREATE EVENT ,  CREATE FUNCTION ,  CREATE INDEX ,  CREATE PROCEDURE , CREATE ROLE ,  CREATE SERVER ,  CREATE SPATIAL REFERENCE SYSTEM ,  CREATE TABLE ,  CREATE TRIGGER ,  CREATE VIEW ,  DROP DATABASE ,  DROP EVENT ,  DROP FUNCTION ,  DROP INDEX ,  DROP PROCEDURE ,  DROP ROLE ,  DROP SERVER ,  DROP SPATIAL REFERENCE SYSTEM ,  DROP TABLE ,  DROP TRIGGER ,  DROP VIEW ,  INSTALL PLUGIN ,  RENAME TABLE ,  TRUNCATE TABLE ,  UNINSTALL PLUGIN . CREATE TABLE  and  DROP TABLE  statements do not commit a transaction if the  TEMPORARY  keyword is used. (This does not apply to other operations on temporary tables such as  ALTER TABLE  and CREATE INDEX , which do cause a commit.) However, although no implicit commit occurs, neither can the statement be rolled back, which means that the use of such statements causes transactional atomicity to be violated. For example, if you use  CREATE TEMPORARY TABLE  and then roll back the transaction, the table remains in existence. The  CREATE TABLE  statement in  InnoDB  is processed as a single transaction. This means that a  ROLLBACK  from the user does not undo  CREATE TABLE  statements the user made during that transaction. CREATE TABLE ... SELECT  causes an implicit commit before and after the statement is executed when you are creating nontemporary tables. (No commit occurs for  CREATE TEMPORARY TABLE ... SELECT .) UNLOCK TABLES  commits a transaction only if any tables currently have been locked with  LOCK TABLES  to acquire nontransactional table locks. A commit does not occur for  UNLOCK TABLES  following FLUSH TABLES WITH READ LOCK  because the latter statement does not acquire table-level locks. Transactions cannot be nested. This is a consequence of the implicit commit performed for any current transaction when you issue a  START TRANSACTION  statement or one of its synonyms. Statements that cause an implicit commit cannot be used in an XA transaction while the transaction is in an  ACTIVE  state. The  BEGIN  statement differs from the use of the  BEGIN  keyword that starts a  BEGIN ... END compound statement. The latter does not cause an implicit commit. See Section 13.6.1, “BEGIN ... END Compound Statement” . • Data loading statements. LOAD DATA .  LOAD DATA  causes an implicit commit only for tables using the NDB  storage engine. • Administrative statements. ANALYZE TABLE ,  CACHE INDEX ,  CHECK TABLE ,  FLUSH ,  LOAD INDEX INTO CACHE ,  OPTIMIZE TABLE ,  REPAIR TABLE ,  RESET  (but not  RESET PERSIST ). • Replication control statements .  START REPLICA | SLAVE ,  STOP REPLICA | SLAVE ,  RESET REPLICA | SLAVE ,  CHANGE REPLICATION SOURCE TO ,  CHANGE MASTER TO . • Statements that implicitly use or modify tables in the  mysql  database. ALTER USER ,  CREATE USER ,  DROP USER ,  GRANT ,  RENAME USER ,  REVOKE ,  SET PASSWORD . • Transaction-control and locking statements. BEGIN ,  LOCK TABLES ,  SET autocommit = 1  (if the value is not already 1),  START TRANSACTION ,  UNLOCK TABLES . 13.3.4 SAVEPOINT, ROLLBACK TO SAVEPOINT, and RELEASE SAVEPOINT Statements SAVEPOINT  identifier ROLLBACK [WORK] TO [SAVEPOINT]  identifier RELEASE SAVEPOINT  identifier 2724