sequelize azure sql 数据库回滚

sequelize azure sql database rollback

我正在使用 sequelize 和 microsoft azure sql 数据库。我正在使用以下连接到数据库

let sequelize = new Sequelize(<DB_NAME>, <DB_USER>, <DB_PASS>, {
    dialect: 'mssql',
    host: 'xxxxxx.database.windows.net',
    operatorsAliases: false,
    encrypt: true,
    timestamps: true
  });

  sequelize.authenticate().then(() => {
    console.log('Connection established successfully.');
  }).catch(err => {
    console.error('Unable to connect to the database:', err);
  })

这将建立连接。我想在我的 sql 查询中使用事务。我使用下面的代码对数据执行更新操作

const USERS= sequelize.define('USERS', <table details>);

await sequelize.transaction(async (t) => {
      await USERS.update(
          { status: 'USER REMOVED' },
          {
            where: { id: <ID>},
            returning: true,
          },
          {transaction : t}
        )
        throw "unsuccessful transaction"
  }).then(async function(){
    console.log("transaction successful")
  }
  ).catch(err => {
    console.error(err)
  })

执行后日志显示如下

Executing (b9f23ee86231fc03255b): BEGIN TRANSACTION;
Executing (b9f23ee86231fc03255b): ROLLBACK TRANSACTION;

转换为 the transaction was rolled back。 但是当我检查 Azure SQL 数据库中的数据时,它已更新。 因此事务没有回滚。

有没有我遗漏或做错了什么? azure SQL 支持交易吗?

静态模型的update方法只有两个参数:valuesoptions所以你应该在options参数中传递交易:

await USERS.update(
          { status: 'USER REMOVED' },
          {
            where: { id: <ID>},
            returning: true,
            transaction : t
          }
        )