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

openGauss每日一练第16天 | 事务控制

原创 许玉冲 2021-12-24
405

本次练习主要学习和练习openGauss事务控制。

事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

数据库中收到的一次执行请求(不在事务块中),如果含有多条语句,将会被打包成一个事务,如果其中有一个语句失败,那么整个请求都将会被回滚。


事务主要操作命令:

启动事务

openGauss通过START TRANSACTION和BEGIN语法启动事务,请参考START TRANSACTIONBEGIN

设置事务

openGauss通过SET TRANSACTION或者SET LOCAL TRANSACTION语法设置事务,请参考SET TRANSACTION

提交事务

openGauss通过COMMIT或者END可完成提交事务的功能,即提交事务的所有操作,请参考COMMIT | END

回滚事务

回滚是在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销。请参考ROLLBACK

支持的事务类型:

transaction_isolation

  • serializable:openGauss中等价于REPEATABLE READ。
  • read committed:只能读取已提交的事务的数据(缺省),不能读取到未提交的数据。
  • repeatable read:仅能读取事务开始之前提交的数据,不能读取未提交的数据以及在事务执行期间由其它并发事务提交的修改。
  • default:设置为default_transaction_isolation所设隔离级别。

默认值:read committed


启动事务:

–通过START TRANSACTIONBEGIN语法启动事务。默认启动一个事务:START TRANSACTION;
select * from pg_class limit 1;
END;


设置事务的隔离级别为READ COMMITTED,访问模式为READ ONLY:

BEGIN;
SET LOCAL TRANSACTION ISOLATION LEVEL READ COMMITTED READ ONLY;
show transaction_read_only;
select * from pg_class limit 1;
create schema tpcds10;
commit;


以隔离级别为repeatable read,读/写方式启动事务:

show transaction_isolation;
START TRANSACTION ISOLATION LEVEL repeatable read READ WRITE;
show transaction_isolation;
show transaction_read_only;
select * from pg_class limit 1;
create schema tpcds10;
rollback;


保存点:

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

保存点测试:

- 建立测试表CREATE TABLE table1(a int);
START TRANSACTION;
INSERT INTO table1 VALUES (1);

–建立保存点SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (2); –回滚保存点 ROLLBACK TO SAVEPOINT my_savepoint;
–删除保存点 RELEASE SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (3); COMMIT;
–查询表的内容,会同时看到1和3,不能看到2,因为2被回滚 SELECT * FROM table1;









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

评论