首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL事务级保证只读事务中外键一致性

PostgreSQL事务级保证只读事务中外键一致性
EN

Stack Overflow用户
提问于 2021-03-25 20:44:42
回答 1查看 140关注 0票数 0

应用程序--(思考导出程序)需要从正在运行的PostgreSQL数据库中读取所有表的所有行。同时,Application B (think应用程序)继续进行读写操作。

child有一个可选的parent外键。

我遇到了以下访问模式的问题:

  • ABEGIN TRANSACTION
  • ASELECT * FROM parent
  • BBEGIN TRANSACTION
  • BINSERT INTO parent
  • BINSERT INTO child -- has foreign key to inserted parent
  • BCOMMIT
  • ASELECT * FROM child -- I do not want to receive the inserted child here

应用程序--中断,因为它读取无法读取parentchild。因此,我不希望A读取B插入的child行。

据我所知,REPEATABLE_READ在这里没有给我任何保证,因为我还没有在这个事务中读取child表。据我所知,出于同样的原因,这也不是一个幻影。

  • SERIALIZABLE保证A不读取新的child行?
  • 是否需要求助于AE 263中的应用逻辑,以丢弃引用无效的<child>D64行?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-26 09:04:56

启动事务A与

代码语言:javascript
复制
START TRANSACTION READ ONLY ISOLATION LEVEL REPEATABLE READ;

然后,该事务中的所有语句都将看到数据库的相同状态(快照),而不管并发事务修改了什么。

我添加READ ONLY只是因为你说A是,它没有必要工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66807351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档