node-postgres:多查询是原子的吗?

问题描述 投票:1回答:1

当使用pg-promise(基于node-postgres)时,multi查询似乎是原子的。

例如,以下PostgreSQL查询根本不插入任何行,即使第二个INSERT由于重复的ID而失败。没有使用任何交易。

insert into mytable (id) values (1); insert into mytable (id) values (1)

这种行为似乎违反直觉,不同于psql。这是一个错误吗?

postgresql pg-promise node-postgres
1个回答
1
投票

我的测试表明,是的,令人惊讶的是,它是原子的,即如果一个查询失败,它们都会失败,就像在事务内部一样。

如果我找到任何内容,我会调查原因并发布更新。见the open issue

UPDATE

调查已经证实,当在单个字符串中发送多个查询时,PostgreSQL的工作原理确实如此。

方法multimultiResult的文件已相应修改:

该操作是原子操作,即所有查询都在单个事务中执行,除非查询字符串中包含明确的BEGIN/COMMIT命令以将其划分为多个事务。

© www.soinside.com 2019 - 2024. All rights reserved.