BEGIN

启动事务块。

语法

BEGIN [ WORK | TRANSACTION ] [ isolation‑level ] [ READ [ONLY] | WRITE ]

参数

WORK | TRANSACTION
仅为了提高可读性的可选关键字。
isolation‑level
指定事务的隔离级别,用于确定当同时运行其他事务时此事务可以访问的数据,为以下之一:
  • READ COMMITTED(默认值):

  • SERIALIZABLE

  • REPEATABLE READ(自动转换为 SERIALIZABLE)

  • READ UNCOMMITTED(自动转换为 READ COMMITTED)

有关详细信息,请参阅事务

READ [ONLY] | WRITE
指定事务模式,为以下之一:
  • READ WRITE(默认):事务为读取/写入。

  • READ ONLY:事务为只读。

如果将事务会话模式设置为只读,将不允许使用以下 SQL 语句,但是不会阻止所有磁盘写入操作:

  • INSERT、UPDATE、DELETE 和 COPY(如果目标表不是临时表)

  • 所有 CREATE、ALTER 和 DROP 命令

  • GRANT、REVOKE 和 EXPLAIN(如果要运行的 SQL 为上面引用的语句之一)。

特权

示例

创建一个隔离级别设置为 READ COMMITTED 且事务模式设置为 READ WRITE 的事务:

=> BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED READ WRITE;
BEGIN
=> CREATE TABLE sample_table (a INT);
CREATE TABLE
=> INSERT INTO sample_table (a) VALUES (1);
OUTPUT
--------
1
(1 row)

=> END;
COMMIT

另请参阅