能否在Knex.js与TypeORM间共用PostgreSQL事务?相关技术是否可行?
Knex.js/TypeORM PostgreSQL事务相关疑问解答
问题1:能否通过Knex.js或TypeORM创建PostgreSQL事务后,在另一数据库客户端中复用该事务?
不行。PostgreSQL的事务是和单个数据库连接(客户端会话)绑定的,每个事务都依赖特定的连接上下文,没办法跨连接复用。不管是Knex.js还是TypeORM,它们的事务实现都是基于底层的PostgreSQL连接,事务一旦在某个客户端连接上开启,其他客户端连接根本没法接入这个已有的事务。
问题2:“两阶段提交事务(two-phase commit transactions)”“分布式事务(distributed transactions)”或“XA事务(XA transactions)”是否有助于实现上述需求?
这些机制不是用来跨客户端复用单个事务的。它们的核心作用是协调多个独立数据库(或服务)上的事务操作,保证所有操作要么全部成功提交,要么全部回滚,解决的是分布式环境下的数据一致性问题,和你想跨客户端复用单个PostgreSQL本地事务的需求完全不相关,所以没法帮你实现这个目标。
内容的提问来源于stack exchange,提问作者Simon Schürg
相关产品推荐
相关产品推荐

