设置当前事务的特性。

语法

SET TRANSACTION transaction_mode

其中 transaction_mode 为下列项之一:

  ISOLATION LEVEL { SERIALIZABLE | READ COMMITTED }
  READ WRITE | READ ONLY

说明

SET TRANSACTION 命令设置当前事务的特性。它对任何后续事务没有影响。可用的事务特性为事务隔离级别和事务访问模式(读/写或只读)。事务的隔离级别确定当其他多个事务同时运行时事务可看到的数据:

  • READ COMMITTED

    语句只能看到在开始执行这条语句之前提交的行。这是默认值。

  • SERIALIZABLE

    当前事务的所有语句只能看到在此事务中执行第一个查询或数据修改语句之前提交的行。

在执行了事务的第一个查询或数据修改语句(SELECTINSERTDELETEUPDATEFETCH)之后,无法更改事务隔离级别。事务访问模式可确定事务是读/写还是只读。读/写是默认值。

当事务为只读时,不允许以下 SQL 命令:INSERTUPDATEDELETE(如果将其写入到的表不是临时表);所有 CREATEALTERDROP 命令;COMMENTGRANTREVOKETRUNCATE;以及 EXECUTE(如果它将执行的命令是列出的命令之一)。这是只读的高级概念,它不会阻止对磁盘的所有写入操作。