暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为openGauss SAVEPOINT

华为高斯 2020-06-01
1072

功能描述

SAVEPOINT用于在当前事务里建立一个新的保存点。

保存点是事务中的一个特殊记号,它允许将那些在它建立后执行的命令全部回滚,把事务的状态恢复到保存点所在的时刻。

注意事项

  • 使用ROLLBACK TO SAVEPOINT回滚到一个保存点。使用RELEASE SAVEPOINT删除一个保存点,但是保留该保存点建立后执行的命令的效果。
  • 保存点只能在一个事务块里面建立。在一个事务里面可以定义多个保存点。
  • 函数、匿名块和存储过程中不支持使用SAVEPOINT语法。
  • 由于节点故障或者通信故障引起的分布式节点线程或进程退出导致的报错,以及由于COPY FROM操作中源数据与目标表的表结构不一致导致的报错,均不能正常回滚到保存点之前,而是整个事务回滚。
  • SQL标准要求,使用savepoint建立一个同名保存点时,需要自动删除前面那个同名保存点。在openGauss数据库里,我们将保留旧的保存点,但是在回滚或者释放的时候,只使用最近的那个。释放了新的保存点将导致旧的再次成为ROLLBACK TO SAVEPOINT和RELEASE SAVEPOINT可以访问的保存点。除此之外,SAVEPOINT是完全符合SQL标准的。

语法格式

SAVEPOINT savepoint_name;

参数说明

savepoint_name

新建保存点的名称。

示例

``` --创建一个新表。 postgres=# CREATE TABLE table1(a int);

--开启事务。 postgres=# START TRANSACTION;

--插入数据。 postgres=# INSERT INTO table1 VALUES (1);

--建立保存点。 postgres=# SAVEPOINT my_savepoint;

--插入数据。 postgres=# INSERT INTO table1 VALUES (2);

--回滚保存点。 postgres=# ROLLBACK TO SAVEPOINT my_savepoint;

--插入数据。 postgres=# INSERT INTO table1 VALUES (3);

--提交事务。 postgres=# COMMIT;

--查询表的内容,会同时看到1和3,不能看到2,因为2被回滚。 postgres=# SELECT * FROM table1;

--删除表。 postgres=# DROP TABLE table1;

--创建一个新表。 postgres=# CREATE TABLE table2(a int);

--开启事务。 postgres=# START TRANSACTION;

--插入数据。 postgres=# INSERT INTO table2 VALUES (3);

--建立保存点。 postgres=# SAVEPOINT my_savepoint;

--插入数据。 postgres=# INSERT INTO table2 VALUES (4);

--回滚保存点。 postgres=# RELEASE SAVEPOINT my_savepoint;

--提交事务。 postgres=# COMMIT;

--查询表的内容,会同时看到3和4。 postgres=# SELECT * FROM table2;

--删除表。 postgres=# DROP TABLE table2; ```

相关链接

RELEASE SAVEPOINTROLLBACK TO SAVEPOINT

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

文集目录
法律声明
发行说明
产品描述
技术白皮书
编译指导书
快速入门
安装指南
管理员指南
开发者指南
关于本文档
概述
数据库使用
应用程序开发教程
管理数据库安全
接口参考
导入数据
导出数据
AI特性
性能调优
配置运行参数
SQL参考
openGauss SQL
关键字
数据类型
常量与宏
函数和操作符
表达式
类型转换
全文检索
系统操作
事务控制
DDL语法一览表
DML语法一览表
DCL语法一览表
SQL语法
ABORT
ALTER DATABASE
ALTER DATA SOURCE
ALTER DEFAULT PRIVILEGES
ALTER DIRECTORY
ALTER FUNCTION
ALTER GROUP
ALTER INDEX
ALTER LARGE OBJECT
ALTER ROLE
ALTER ROW LEVEL SECURITY POLICY
ALTER SCHEMA
ALTER SEQUENCE
ALTER SESSION
ALTER SYNONYM
ALTER SYSTEM KILL SESSION
ALTER TABLE
ALTER TABLE PARTITION
ALTER TABLESPACE
ALTER TEXT SEARCH CONFIGURATION
ALTER TEXT SEARCH DICTIONARY
ALTER TRIGGER
ALTER TYPE
ALTER USER
ALTER VIEW
ANALYZE | ANALYSE
BEGIN
CALL
CHECKPOINT
CLOSE
CLUSTER
COMMENT
COMMIT | END
COMMIT PREPARED
COPY
CREATE DATABASE
CREATE DATA SOURCE
CREATE DIRECTORY
CREATE FUNCTION
CREATE GROUP
CREATE INDEX
CREATE ROW LEVEL SECURITY POLICY
CREATE PROCEDURE
CREATE ROLE
CREATE SCHEMA
CREATE SEQUENCE
CREATE SYNONYM
CREATE TABLE
CREATE TABLE AS
CREATE TABLE PARTITION
CREATE TABLESPACE
CREATE TEXT SEARCH CONFIGURATION
CREATE TEXT SEARCH DICTIONARY
CREATE TRIGGER
CREATE TYPE
CREATE USER
CREATE VIEW
CURSOR
DEALLOCATE
DECLARE
DELETE
DO
DROP DATABASE
DROP DATA SOURCE
DROP DIRECTORY
DROP FUNCTION
DROP GROUP
DROP INDEX
DROP OWNED
DROP ROW LEVEL SECURITY POLICY
DROP PROCEDURE
DROP ROLE
DROP SCHEMA
DROP SEQUENCE
DROP SYNONYM
DROP TABLE
DROP TABLESPACE
DROP TEXT SEARCH CONFIGURATION
DROP TEXT SEARCH DICTIONARY
DROP TRIGGER
DROP TYPE
DROP USER
DROP VIEW
EXECUTE
EXPLAIN
EXPLAIN PLAN
FETCH
GRANT
INSERT
LOCK
MOVE
MERGE INTO
PREPARE
PREPARE TRANSACTION
REASSIGN OWNED
REINDEX
RELEASE SAVEPOINT
RESET
REVOKE
ROLLBACK
ROLLBACK PREPARED
ROLLBACK TO SAVEPOINT
SAVEPOINT
SELECT
SELECT INTO
SET
SET CONSTRAINTS
SET ROLE
SET SESSION AUTHORIZATION
SET TRANSACTION
SHOW
START TRANSACTION
TRUNCATE
UPDATE
VACUUM
VALUES
附录
用户自定义函数
存储过程
系统表和系统视图
DBE_PERF Schema
WDR Snapshot Schema
GUC参数说明
常见故障定位指南
SQL执行计划概述
详解
工具参考
术语表
TA的专栏