TCL(会话控制)
TCL
TCL (Transaction Control Language) 是用于控制事务的语言,包括提交 (commit)、回滚 (rollback) 和保存点 (savepoint)。
概述
COMMIT:            将所有的事务更改永久保存到数据库中,结束当前事务。 ROLLBACK:          撤销当前事务的所有更改,回滚到事务开始之前的状态。 SAVEPOINT:         为当前事务创建一个保存点,可以在事务执行过程中使用 ROLLBACK 回滚到指定的保存点。 RELEASE SAVEPOINT: 删除事务中指定的保存点,释放相关的数据库资源。 SET TRANSACTION:   设置事务的隔离级别和事务的读写特性。
   | 
 
TCL一般与DML语句配合使用。
事务:一个事务是一组SQL语句。
“事务”格式如下:
 BEGIN TRANSACTION;
  COMMIT;
 
 
  | 
 
COMMIT(提交)
 COMMIT;
 
      COMMIT WORK:           默认选项,表示提交当前事务并释放锁定资源。与基本的COMMIT语句相同。     COMMIT TRANSACTION:    与COMMIT WORK相同,也是默认选项。表示提交当前事务并释放锁定资源。
      COMMIT AND CHAIN:      提交当前事务并立即启动一个新的事务,使新的事务成为当前事务。     COMMIT AND NO CHAIN:   提交当前事务并不立即启动一个新的事务。这是默认选项。     COMMIT RETAIN LOCKS:   提交当前事务,但保留当前事务所获取的所有锁定资源。 
 
  | 
 
ROLLBACK(撤销与回滚)
用于撤销未提交的事务或回滚已经提交的事务。
注: COMMIT 后不能被撤销操作修改,也就是撤销不了已经提交保存到数据的修改。
 
  BEGIN TRANSACTION;
  ROLLBACK; 
 
 
 
  BEGIN TRANSACTION;
  SAVEPOINT my_savepoint;
  ROLLBACK TO SAVEPOINT my_savepoint; 
 
 
 
  | 
 
SAVEPOINT(保存点)
用于创建一个保存点。上面在撤销时可以直接撤销到保存点而不是撤销整个修改的操作。
注:当整个事务COMMIT后,所有的 SAVEPOINT 都会失效!(不能回滚的原因)
 SAVEPOINT savepoint_name;
 
  | 
 
RELEASE SAVEPOINT(删保存节点)
如果指定的保存点名称存在,则该命令将删除保存点,并释放由保存点所占用的所有相关资源。
如果指定的保存点名称不存在就报错。
RELEASE SAVEPOINT savepoint_name;
   | 
 
SET TRANSACTION(隔离级别)
用于设置事务的隔离级别和其他选项。
ISOLATION LEVEL:用于设置事务的隔离级别。         READ UNCOMMITTED    读未提交         READ COMMITTED      已提交读         REPEATABLE READ     可重复读取         SERIALIZABLE        可序列化                  默认的隔离级别是数据库的默认隔离级别。
          ==>              在 MySQL 中,默认隔离级别是 Repeatable Read(可重复读);             在 PostgreSQL 中,默认隔离级别是 Read Committed(已提交读);             在 Oracle 中,默认隔离级别是 Read Committed(已提交读) eg:
  SET TRANSACTION ISOLATION LEVEL READ COMMITTED READ WRITE;
 
  READ ONLY / READ WRITE:用于设置事务的读写性质。     READ ONLY    则事务只能进行读取操作;     READ WRITE   则事务可以进行读取和写入操作(默认)。 eg:
  SET TRANSACTION READ ONLY NOT DEFERRABLE;
 
  DEFERRABLE / NOT DEFERRABLE:用于设置事务的延迟性质。     DEFERRABLE      事务可以延迟提交,直到其他事务完成。     NOT DEFERRABLE  事务必须立即提交(默认)。 eg:
  SET TRANSACTION READ WRITE DEFERRABLE;
   |