
# 事务
- 【规格】大对象操作不支持事务。
  ![](https://support.huaweicloud.com/centralized-devg-v3-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  大对象操作包括：创建删除DATABASE、ANALYZE和VACUUM。
  
- 【规则】通过JDBC客户端接入时，关闭autocommit参数，显式的执行事务的COMMIT。
  - 一方面，开启autocommit参数，会导致部分参数（如fetchsize）失效。
  
  - 另一方面，业务应明确业务逻辑，减少对数据库的依赖。
   
- 【规则】通过JDBC接入数据库时，避免拼接多条SQL为一条语句发送执行。 当多条语句拼接为一条语句时，其中一条执行失败后会整体返回失败，不利于定位错误，建议拆分。
  示例：
  - 不符合规则语句：
    ```
    Connection conn = ....
    try {
        Statement stmt = null;
        try {
            stmt = conn.createStatement();
            stmt.executeUpdate("CREATE TABLE t1 (a int); DROP TABLE t1");
        } finally {
            stmt.close();
        }
        conn.commit();
    } catch(Exception e) {
       conn.rollback();
    } finally {
       conn.close();
    }
    ```
    
  
  - 建议拆分成两条语句分别发送：
    ```
    Connection conn = ....
    try {
        Statement stmt = null;
        try {
            stmt = conn.createStatement();
            stmt.executeUpdate("CREATE TABLE t1 (a int)");
            stmt.executeUpdate("DROP TABLE t1");
        } finally {
            stmt.close();
        }
        conn.commit();
    } catch(Exception e) {
       conn.rollback();
    } finally {
       conn.close();
    }
    ```
    
    
 
