小编fat*_*sal的帖子

PostgreSQL 的可重复读允许幻读 但它的文档说它不允许

我对 Postgresql 可重复读取隔离级别有问题。我确实做了一个关于可重复读隔离级别在幻读发生时的行为的实验。

Postgresql 的手册说“该表还显示 PostgreSQL 的可重复读实现不允许幻读。”

但是出现了幻读;

CREATE TABLE public.testmodel
(
    id bigint NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

--第 1 节 --

BEGIN TRANSACTION ISOLATION LEVEL Repeatable Read;
INSERT INTO TestModel(ID)
VALUES (10);

Select sum(ID)
From TestModel
where ID between 1 and 100;

--COMMIT;
Run Code Online (Sandbox Code Playgroud)

--第二场--

BEGIN TRANSACTION ISOLATION LEVEL Repeatable Read;    
INSERT INTO TestModel(ID)
VALUES (10);

Select sum(ID)
From TestModel
where ID between 1 and 100;

COMMIT;
Run Code Online (Sandbox Code Playgroud)

我遵循的步骤;

  1. 创建表
  2. 运行会话 1(我评论了 commit 语句)
  3. 运行会话 2
  4. 在会话 1 中运行提交语句。

令我惊讶的是,它们(会话 …

postgresql

6
推荐指数
1
解决办法
1116
查看次数

标签 统计

postgresql ×1