使用时 pg-promise (基于 node-postgres ),一个 multi -查询似乎是原子的。
pg-promise
node-postgres
multi
PostgreSQL 查询根本不插入任何行,即使只有第二行 INSERT 由于id重复而失败。未使用任何事务。
PostgreSQL
INSERT
insert into mytable (id) values (1); insert into mytable (id) values (1)
这种行为似乎违反直觉,并不同于 psql
psql
我的测试表明,是的,令人惊讶的是,它是原子的,也就是说,如果一个查询失败,它们都会失败,就像在事务中一样。
the open issue .
更新
方法文件 multi 和 multiResult 已作相应修改:
该操作是原子的,即所有查询都在单个事务中执行,除非有显式查询 BEGIN/COMMIT 包含在查询字符串中的用于将其划分为多个事务的命令。
BEGIN/COMMIT