BEGIN
語句可用于開始一個事務塊,也就是說所有BEGIN
命令之后的所有語句將被在一個事務中執行,直到給出一個顯式的 COMMIT 或者 ROLLBACK。默認情況下(沒有 BEGIN
), PolarDB在 “自動提交”模式中執行事務,也就是說每個語句都在自己的事務中執行并且在語句結束時隱式地執行一次提交(如果執行成功,否則會完成一次回滾)。
簡介
在一個事務塊內的語句會執行得更快,因為事務的開始/提交也要求可觀的 CPU 和磁盤活動。在進行多個相關更改時,在一個事務內執行多個語句也有助于保證一致性:在所有相關更新還沒有完成之前,其他會話將不能看到中間狀態。
如果指定了隔離級別、讀/寫模式或者延遲模式,新事務也會具有這部分特性, 就像執行了 SET TRANSACTION一樣。
語法
BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]
其中 transaction_mode 是以下之一:
ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
READ WRITE | READ ONLY
[ NOT ] DEFERRABLE
參數
WORK
|TRANSACTION
:可選的關鍵詞,無作用。
其他參數的含義請參考SET TRANSACTION。
說明
START TRANSACTION 具有和
BEGIN
相同的功能。在已經在事務塊中時發出
BEGIN
將產生警告消息。事務狀態不會被影響。要在事務塊中嵌套事務,可以使用SAVEPOINT。由于向后兼容的原因,連續的
transaction_modes
之間的逗號可以被省略。
示例
開始一個事務塊:
BEGIN;
文檔內容是否對您有幫助?