Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

BEGIN

开始事务。与 START TRANSACTION 同义。

事务是单一的逻辑工作单元,而无论是包含一个命令还是多个命令。一般来说,事务中的所有命令都是在数据库的快照上执行,其开始时间由为 transaction_snapshot_begin 系统配置参数设置的值决定。

默认情况下,单独的 Amazon Redshift 操作(查询、DDL 语句、加载)自动提交到数据库。如果要暂停操作提交直到后续工作完成,您需要使用 BEGIN 语句打开一个事务,然后运行所需的命令,最后使用 COMMITEND 语句关闭事务。如果需要,您可以使用 ROLLBACK 语句中止正在进行的事务。此行为的一个例外是 TRUNCATE 命令,它在所运行的事务中提交事务,并且无法回滚。

语法

Copy
BEGIN [ WORK | TRANSACTION ] [ ISOLATION LEVEL option ] [ READ WRITE | READ ONLY ] START TRANSACTION [ ISOLATION LEVEL option ] [ READ WRITE | READ ONLY ] Where option is SERIALIZABLE | READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ Note: READ UNCOMMITTED, READ COMMITTED, and REPEATABLE READ have no operational impact and map to SERIALIZABLE in Amazon Redshift.

参数

WORK

可选关键字。

TRANSACTION

可选关键字;WORK 和 TRANSACTION 同义。

ISOLATION LEVEL SERIALIZABLE

默认情况下支持可序列化隔离,因此无论此语法是否包含在语句中,事务的行为都是相同的。请参阅管理并发写入操作。不支持任何其他隔离级别。

注意

SQL 标准定义了四个事务隔离级别,可防止脏读(事务读取由并发未提交事务写入的数据)、不可重复读(事务重新读取之前已读取的数据,并发现自初始读取以后,另一个已提交的事务已更改了该数据)以及幻读(事务重新执行查询,返回满足一组搜索条件的行,然后发现这组行由于另一个最近提交的事务而发生了更改):

  • 读取未提交:脏读、不可重复读以及幻读是可能的。

  • 读取已提交:不可重复读和幻读是可能的。

  • 可重复读:幻读是可能的。

  • 可序列化:阻止脏读、不可重复读以及幻读。

虽然您可以使用这四个事务隔离级别中的任意一个,不过 Amazon Redshift 会将所有隔离级别作为可序列化级别处理。

READ WRITE

向事务提供读取和写入权限。

READ ONLY

向事务提供只读权限。

示例

以下示例开始一个可序列化事务块:

Copy
begin;

以下示例开始一个具有可序列化隔离级别和读写权限的事务块:

Copy
begin read write;

本页内容: