代码之家  ›  专栏  ›  技术社区  ›  Code

节点postgres:多查询是原子的吗?

  •  1
  • Code  · 技术社区  · 6 年前

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

    PostgreSQL 查询根本不插入任何行,即使只有第二行 INSERT 由于id重复而失败。未使用任何事务。

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

    这种行为似乎违反直觉,并不同于 psql

    1 回复  |  直到 6 年前
        1
  •  1
  •   vitaly-t    6 年前

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

    the open issue .

    更新

    方法文件 multi multiResult 已作相应修改:

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