https://node-postgres.com/features/transactions 我按照上面的文档尝试使用pg为我的项目实现一些事务API。 但有一件事突然出现,一个连接(客户端)可以并行处理两个事务吗?
例如,我通过查询('BEGIN')创建一个事务,并且在此事务中,我将有一个promiseChain1,在每个步骤中,将执行一个sql。最后一步是进行查询('COMMIT'),并捕获(err =>查询('ROLLBACK'))
psuedo代码: 的 BEGIN.then(SQL1_1)。然后(SQL1_2)。然后(SQL1_3)。然后(COMMIT).catch(回滚)
我将再次通过查询('BEGIN')创建另一个事务,与前一个事务类似,将创建另一个promiseChain2,类似于前一个。 伪代码: 的 BEGIN.then(SQL2_1)。然后(SQL2_2)。然后(COMMIT).catch(回滚)
我要做的最后一件事是调用Promise.all([promiseChain1,promiseChain2])。然后(...)
取决于每个sql语句执行所花费的时间,两个BEGIN的顺序,两个COMMIT / ROLLBACK和来自两个链的其他sql语句可能是随机的,对吗?
BEGIN SQL1_1 BEGIN SQL1_2 SQL2_1 SQL2_2 COMMIT SQL1_3 ROLLBACK
但由于两个“交易”实际上使用相同的连接,我认为结果将与我期望的非常不同。
任何人都可以澄清使用pg的交易概念和承诺链是否会出现问题?