In InnoDB, all user activity occurs inside a
        transaction. If autocommit mode
        is enabled, each SQL statement forms a single transaction on its
        own. By default, MySQL starts the session for each new
        connection with autocommit
        enabled, so MySQL does a commit after each SQL statement if that
        statement did not return an error. If a statement returns an
        error, the commit or rollback behavior depends on the error. See
        Section 17.21.5, “InnoDB Error Handling”.
      
        A session that has autocommit
        enabled can perform a multiple-statement transaction by starting
        it with an explicit
        START
        TRANSACTION or
        BEGIN
        statement and ending it with a
        COMMIT or
        ROLLBACK
        statement. See Section 15.3.1, “START TRANSACTION, COMMIT, and ROLLBACK Statements”.
      
        If autocommit mode is disabled
        within a session with SET autocommit = 0, the
        session always has a transaction open. A
        COMMIT or
        ROLLBACK
        statement ends the current transaction and a new one starts.
      
        If a session that has
        autocommit disabled ends
        without explicitly committing the final transaction, MySQL rolls
        back that transaction.
      
        Some statements implicitly end a transaction, as if you had done
        a COMMIT before executing the
        statement. For details, see Section 15.3.3, “Statements That Cause an Implicit Commit”.
      
        A COMMIT means that the changes
        made in the current transaction are made permanent and become
        visible to other sessions. A
        ROLLBACK
        statement, on the other hand, cancels all modifications made by
        the current transaction. Both
        COMMIT and
        ROLLBACK
        release all InnoDB locks that were set during
        the current transaction.
By default, connection to the MySQL server begins with autocommit mode enabled, which automatically commits every SQL statement as you execute it. This mode of operation might be unfamiliar if you have experience with other database systems, where it is standard practice to issue a sequence of DML statements and commit them or roll them back all together.
          To use multiple-statement
          transactions, switch
          autocommit off with the SQL statement SET autocommit
          = 0 and end each transaction with
          COMMIT or
          ROLLBACK as
          appropriate. To leave autocommit on, begin each transaction
          with START
          TRANSACTION and end it with
          COMMIT or
          ROLLBACK.
          The following example shows two transactions. The first is
          committed; the second is rolled back.
        
$> mysql testmysql> CREATE TABLE customer (a INT, b CHAR (20), INDEX (a));
Query OK, 0 rows affected (0.00 sec)
mysql> -- Do a transaction with autocommit turned on.
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO customer VALUES (10, 'Heikki');
Query OK, 1 row affected (0.00 sec)
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)
mysql> -- Do another transaction with autocommit turned off.
mysql> SET autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO customer VALUES (15, 'John');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO customer VALUES (20, 'Paul');
Query OK, 1 row affected (0.00 sec)
mysql> DELETE FROM customer WHERE b = 'Heikki';
Query OK, 1 row affected (0.00 sec)
mysql> -- Now we undo those last 2 inserts and the delete.
mysql> ROLLBACK;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM customer;
+------+--------+
| a    | b      |
+------+--------+
|   10 | Heikki |
+------+--------+
1 row in set (0.00 sec)
mysql>Transactions in Client-Side Languages
          In APIs such as PHP, Perl DBI, JDBC, ODBC, or the standard C
          call interface of MySQL, you can send transaction control
          statements such as COMMIT to
          the MySQL server as strings just like any other SQL statements
          such as SELECT or
          INSERT. Some APIs also offer
          separate special transaction commit and rollback functions or
          methods.