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
方法只有两个参数:values
和options
所以你应该在options
参数中传递交易:
await USERS.update(
{ status: 'USER REMOVED' },
{
where: { id: <ID>},
returning: true,
transaction : t
}
)
我正在使用 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
方法只有两个参数:values
和options
所以你应该在options
参数中传递交易:
await USERS.update(
{ status: 'USER REMOVED' },
{
where: { id: <ID>},
returning: true,
transaction : t
}
)