# Transaction Control Statements

__*Transaction Control*__
__*BEGIN*__
__*START TRANSACTION*__

+ Statements **`START TRANSACTION`** or **`BEGIN`**: Explicitly start a new transaction
+ Statement **`COMMIT`**: Make changes to the current transaction permanent
+ Statement **`ROLLBACK`**: Cancel the changes of the current transaction
+ Statement **`SET AUTOCOMMIT = 0|1`**: Control the **`AUTOCOMMIT`** mode off and on
  + Default value for **`AUTOCOMMIT`** is **`1`**
------------------------------------------------------------
To explicitly start a new transaction, you can use either the BEGIN statement or the START TRANSACTION statement, which have the same effect.

syntax:

```
BEGIN;
START TRANSACTION;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
```

If the current Session is in the middle of a transaction when the above statement is executed, the system will automatically commit the current transaction and then start a new transaction.

ATTENTION:

In TiDB,following statements are equivalent: 
  BEGIN, START TRANSACTION and START TRANSACTION WITH CONSISTENT SNAPSHOT.

TiDB takes the current DB snapshot after executing the above statement. START TRANSACTION WITH CONSISTENT SNAPSHOT is a snapshot taken when Therefore, the BEGIN, START TRANSACTION, and START TRANSACTION WITH CONSISTENT SNAPSHOT in TiDB are all equivalent to START SNAPSHOT
