sequelize 事务是原子的吗?

Are sequelize transactions atomic?

我想使用 sequelize 作为我的 REST 后端的 ORM。我只需要确定地知道一些事情,sequelize 事务是原子的,这意味着在提交的事务和回滚的事务之间没有状态。 这是一个例子: 一个项目始终至少需要一个分配给它的人。 工人和项目有多对多的关系,这意味着它需要两者之间的项目关联。 因此,为了使该条件成立,需要创建一个项目,并且需要以原子方式创建一个关联。 Sequelize 允许这样做,但它没有明确声明事务是原子的,只是它们可以回滚。
那么在这个例子中,数据库是否可能暂时处于项目没有任何关联的状态?

Sequelize 事务依赖于已配置的 RDBMS 事务,因此如果您的 DBMS 支持原子事务(您知道非原子事务吗?),那么您无需担心 Sequelize 事务的原子性。

只是不要忘记在所有 CRUD Sequelize 模型方法中指示一个 sequelize 事务。

可以读取未提交的事务更改,但这需要设置一种特殊模式,如 READ_UNCOMMITED 以从已更改的 table 中读取脏记录。这不是日常工作的模式,你应该避免它。通常所有 RDBMS 对所有连接都默认使用 READ_COMMITED 模式,以确保连接只看到已提交的更改。