Postgresql事务测试

2023-09-19 11:01:23

参考一个事务中 可以查询自己未提交的数据吗_最详细MySQL事务隔离级别及原理讲解!(二)-CSDN博客

一个事务中 可以查询自己未提交的数据吗_趣说数据库事务隔离级别与原理_weixin_39747293的博客-CSDN博客

【MySql:当前读与快照读】_当前读和快照读_QuietThinking的博客-CSDN博客

PostgreSQL实战之事务与并发控制(二)_postgresql 默认事务级别_auspicious航的博客-CSDN博客

当前事务默认级别:

SELECT current_setting ('default_transaction_isolation')

 结果:read committed (读已提交)

一个事务的sql:

能读到当前事务修改的数据

Begin transaction;
-- SELECT * FROM "budget_base_config";
SELECT sum(deadline) FROM "budget_base_config";
update "budget_base_config" set deadline=12 where period='2023-07';
-- SELECT * FROM "budget_base_config";
SELECT sum(deadline) FROM "budget_base_config";
commit;

结果   123    24

read committed级别能解决脏读问题。其他事务未提交的数据无法读取

2个事务

事务1未提交

Begin transaction;
SELECT sum(deadline) FROM "budget_base_config";
update "budget_base_config" set deadline=11 where period='2023-07';
SELECT sum(deadline) FROM "budget_base_config";
-- commit;

结果121   21

事务2查询之前的数据

Begin transaction;
-- SELECT * FROM "budget_base_config";
SELECT sum(deadline) FROM "budget_base_config";

结果121

但是read committed是不可重复读的,一个事务中读取的2次数据的时间间隔里因为另一个事务的提交,导致前后2次数据读取不一致

事务一执行
Begin transaction;
SELECT sum(deadline) FROM "budget_base_config";

结果121

事务二执行
Begin transaction;
update "budget_base_config" set deadline=11111 where period='2023-07';
commit;


事务一再执行
SELECT sum(deadline) FROM "budget_base_config";

结果
11121

设置当前会话的隔里级别为REPEATABLE READ(可重复读)

事务一执行
START TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SHOW transaction_isolation;
Begin transaction;
SELECT sum(deadline) FROM "budget_base_config";

结果11121

事务二执行
Begin transaction;
update "budget_base_config" set deadline=1 where period='2023-07';
SELECT sum(deadline) FROM "budget_base_config";
commit;

结果11

事务一执行
SELECT sum(deadline) FROM "budget_base_config";

结果11121

可见现在事务一前后读取数据一致

更多推荐

Word 文档转换 PDF、图片

工作有需要Word文档转换PDF、图片的场景,我们来看看Java开发中怎么解决这个问题的。Word转PDFWord转PDF分为商用Aspose方案和开源ApachePOI+iText方案。Aspose方案这种方式在目前来看应该是最好的,无论是转换的速度还是成功的概率,还支持的文件类型。由于Aspose并非开源软件,不会

ArcGIS 10.3软件安装包下载及安装教程!

【软件名称】:ArcGIS10.3【安装环境】:Windows【下载链接】:链接:https://pan.baidu.com/s/1K5ab7IHMYa23HpmuPkFa1A提取码:oxbb复制这段内容后打开百度网盘手机App,操作更方便哦软件解压码点击原文获取:ArcGIS10.3软件安装包下载及安装教程软件介绍:

理解MySQL的会话变量、局部变量和全局变量

理解MySQL的会话变量、局部变量和全局变量1.MySQL变量分类根据作用范围不同,分为会话用户变量和局部变量。会话用户变量:作用域和会话变量一样,只对当前连接会话有效。局部变量:只在BEGIN和END语句块中有效,局部变量只能在存储过程和存储函数中使用。全局变量:在MySQL服务器启动运行后,系统内置变量。2.变量定

QRunnable与外界互传对象

1.概述QRunnable与外界互通讯是有两种方法的使用多继承。让我们的自定义线程类同时继承于QRunnable和QObject,这样就可以使用信号和槽,但是多线程使用比较麻烦,特别是继承于自定义的类时,容易出现接口混乱,所以在项目中尽量少用多继承。//使用多继承classrunnable:publicQObject,

xdebug3开启profile和trace

【xdebug开启profiler】https://xdebug.org/docs/profilerhttp://www.xdebug.org.cn/docs/profiler1、php.ini添加下面配置然后重启php容器:xdebug.mode=profile;这个目录保存profile和trace文件xdebug

TQ210-Bootloader-Uboot(LTS)

Bootloader的作用Bootloader是位于计算机系统启动过程中的程序,它的主要作用是将操作系统从磁盘等外部存储介质加载到计算机内存中,并启动操作系统执行。Bootloader通常包括硬件初始化、自检、异常处理和启动操作系统等功能。它是计算机系统中非常重要的部分,直接影响系统启动和运行的稳定性和性能。U-boo

10分钟设置免费海外远程桌面

前言本教程将向您介绍如何使用AmazonLightsail服务的免费套餐轻松搭建属于您的远程桌面。依托于Amazon全球可用区,您可以在世界各地搭建符合您配置需求的远程桌面。本教程需要先拥有亚马逊云科技海外账户。现在注册亚马逊云科技账户可以享受12个月免费套餐,包括EC2等多种热门产品。亚马逊云科技开发者社区为开发者们

LinkedList与链表

目录一、Arraylist的缺陷二、链表2.1链表的概念和结构2.2链表的实现三、链表面试题3.1删除链表中所有值为val的节点3.2反转一个单链表3.3链表的中间节点3.4将有序链表合并3.5输出倒数第k个节点3.6链表分割3.7链表的回文结构3.8找两个链表的公共节点3.9判断链表是否有环3.10找链表入环的第一个

Axure设计之数据图表折线图(中继器)

折线图是一种用于显示数据随时间变化或有序类别关系变化的图形。在折线图中,数据点用线段连接,并按照时间顺序或类别顺序排列。通过观察折线图的走势和变化,可以获得数据变化的趋势和规律。在系统统计分析中折线图经常被使用的数据图表。一、效果展示1、该示例为折线图,分别对客流量和购买量以月份为单位进行统计;2、横轴为统计月份,纵轴

Python经典练习题(一)

文章目录🍀第一题🍀第二题🍀第三题🍀第四题🍀第五题🍀第一题有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?这里我们使用两种方法进行求解解法一:循环套循环count=0foriinrange(1,5):forjinrange(1,5):forkinrange(1,5):if(i!

如何辨认是否是高防服务器?

因为现在高防服务器比较出名,很多IDC服务器商都标榜自己的服务器是高防服务器,那我们怎么辨别服务器商说的高防服务器是否是真正的高防服务器呢?今天小编就告诉大家几点辨认是否是高防服务器的小要点。向选择好的服务器商要一下高防服务器的IP,然后通过简单的测试来看一看,也就是ping指令(用来测试网络连接是否正常)来检查,一般

热文推荐