更新时间: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; |
父主题: C