BEGIN - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

BEGIN

開始交易。與 同義字STARTTRANSACTION。

交易是單一邏輯工作單位,無論是由一個命令或多個命令所組成。一般而言,交易中的所有命令會在資料庫的快照上執行,其開始時間是由 transaction_snapshot_begin 系統組態參數的值組所決定。

根據預設,個別 Amazon Redshift 操作 (查詢、DDL陳述式、負載) 會自動提交至資料庫。如果您想要暫停對操作的遞交,直到後續工作完成為止,您需要使用 BEGIN 陳述式開啟交易,然後執行所需的命令,然後使用 COMMITEND陳述式關閉交易。若有需要,您可以使用 ROLLBACK 陳述式停止進行中的交易。此行為的例外狀況是 TRUNCATE 命令,它會遞交本身執行所在的交易,而且無法轉返。

語法

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. You can see database isolation levels on your cluster by querying the stv_db_isolation_level table.

參數

WORK

選用的關鍵字。

TRANSACTION

選用關鍵字;WORK以及 TRANSACTION是同義字。

ISOLATION LEVEL SERIALIZABLE

可序列化隔離是預設支援的操作,因此無論陳述式中是否包含此語法,交易的行為都一樣。如需詳細資訊,請參閱管理並行寫入操作。不支援任何其他隔離層級。

注意

SQL 該標準定義了四個層級的交易隔離,以防止讀取髒污 (交易讀取並行未承諾交易所寫入的資料), 不可重複的讀取 (其中交易重新讀取先前讀取的資料,並發現資料在初次讀取後被另一個遞交的交易所變更), 和假體讀取 (其中交易重新執行查詢, 傳回一組符合搜尋條件的列, 然後, 會發現一組資料列因另一個最近遞交的交易而變更):

  • 讀取未遞交資料:已變更讀取、不可重複讀取及幽靈讀取都有可能發生。

  • 讀取已遞交資料:不可重複讀取及幽靈讀取都有可能發生。

  • 可重複讀取:可能發生幽靈讀取。

  • 可序列化:防止已變更讀取、不可重複讀取及幽靈讀取。

雖然您可以使用四種交易隔離層級中的任一種,但是 Amazon Redshift 會以可序列化的方式處理所有隔離層級。

READ WRITE

為交易提供讀取和寫入許可。

READ ONLY

為交易提供唯讀許可。

範例

下列範例會啟動可序列化交易區塊:

begin;

下列範例會啟動具有可序列化隔離層級和讀取與寫入許可的交易區塊:

begin read write;