
# START TRANSACTION
#### 功能描述
通过START TRANSACTION启动事务。如果声明了隔离级别、读写模式，那么新事务就使用这些特性，类似执行了[SET TRANSACTION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0264.html)。
#### 注意事项
无。
#### 语法格式
格式一：START TRANSACTION格式
```
START TRANSACTION
  [ 
    { 
       ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ }
       | { READ WRITE | READ ONLY }
     } [, ...] 
  ];
```
格式二：BEGIN格式
```
BEGIN [ WORK | TRANSACTION ]
  [ 
    { 
       ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ }
       | { READ WRITE | READ ONLY }
      } [, ...] 
  ];
```
#### 参数说明
表1START TRANSACTION参数说明 
| 参数                      | 描述                                                                                                                                                                                                       | 取值范围                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|
| WORK \| TRANSACTION     | BEGIN格式中的可选关键字，对操作没有影响。                                                                                                                                                                                  | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ISOLATION LEVEL         | 指定事务隔离级别，该参数决定当一个事务中存在其他并发运行事务时能够看到什么数据。 说明： 在事务中第一个数据修改语句（INSERT，DELETE，UPDATE，FETCH，COPY）执行之后，事务隔离级别就不能再次设置。 | - READ COMMITTED：读已提交隔离级别，只能读到已经提交的数据，而不会读到未提交的数据。缺省值为READ COMMITTED。  - READ UNCOMMITTED：读未提交隔离级别，DWS不支持READ UNCOMMITTED，如果设置了READ UNCOMMITTED，实际上使用的是READ COMMITTED。  - REPEATABLE READ：可重复读隔离级别，仅能看到事务开始之前提交的数据，不能看到未提交的数据以及在事务执行期间由其它并发事务提交的修改。  - SERIALIZABLE：事务可序列化，DWS不支持SERIALIZABLE，如果设置了SERIALIZABLE，实际上使用的是REPEATABLE READ。   |
| READ WRITE \| READ ONLY | 指定事务访问模式。                                                                                                                                                                                                | 读写模式或者只读模式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   
#### 示例
- 准备数据：
  ```
  DROP SCHEMA IF EXISTS tpcds CASCADE;
  CREATE SCHEMA tpcds;
  CREATE TABLE tpcds.reason (a int, b int);
  ```
  
- 以默认方式启动事务：
  ```
  START TRANSACTION;
  SELECT * FROM tpcds.reason;
  END;
  ```
  
- 以隔离级别为READ COMMITTED，读/写方式启动事务：
  ```
  START TRANSACTION ISOLATION LEVEL READ COMMITTED READ WRITE;
  SELECT * FROM tpcds.reason;
  COMMIT;
  ```
  
 
#### 相关链接
[COMMIT \| END](https://support.huaweicloud.com/sqlreference-dws/dws_06_0259.html)，[ROLLBACK](https://support.huaweicloud.com/sqlreference-dws/dws_06_0266.html)，[SET TRANSACTION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0264.html)
