更新时间:2026-10-21 GMT+08:00
分享

COMMIT PREPARED

功能描述

提交一个预先为两阶段提交准备的事务。

注意事项

  • 该功能为内部使用功能,不建议用户使用。
  • 该功能仅在维护模式(GUC参数xc_maintenance_mode为on时)下可用,该模式仅供维护人员排查问题使用,一般用户不应使用该模式。
  • 命令执行者必须是该事务的创建者或系统管理员,且创建和提交操作允许在不同会话中执行。
  • 事务功能由数据库自动维护,不应显式使用事务功能。

语法格式

1
COMMIT PREPARED transaction_id [ WITH commit_sequence_number ];

参数说明

  • transaction_id

    待提交事务的标识符。不能和任何当前预备事务已经使用了的标识符同名。

  • commit_sequence_number

    待提交事务的序列号,为一个64位递增的无符号数。

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
--开始。
gaussdb=# SET XC_MAINTENANCE_MODE = ON;
SET

gaussdb=# BEGIN;

--创建表。
gaussdb=# CREATE TABLE item1(id int);

--准备标识符为的trans_test的事务。
gaussdb=# PREPARE TRANSACTION 'trans_test';

--查询表item1,这里应该访问不到。
gaussdb=# SELECT * FROM item1;
ERROR:  Relation "item1" does not exist on test.
LINE 1: SELECT * FROM item1;

--提交标识符为的trans_test的事务。
gaussdb=# COMMIT PREPARED 'trans_test';

--查询表item1,这里应该可以访问。
gaussdb=# SELECT * FROM item1;
 a 
---
(0 rows)

--删除表。
gaussdb=# DROP TABLE item1;

相关文档