sql-server - 续集 azure sql 数据库回滚
问题描述
我正在使用带有 microsoft azure sql 数据库的 sequelize。我正在使用以下连接到数据库
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
}
)
推荐阅读
- ruby - Minitest 有时会因未完成或错误消息而提前终止
- python - pandas stack 和 unstack 性能在数据帧压缩后降低,比 R 的 data.table 差很多
- java - Java中字符串重复追加的大O
- keras - Keras Dropout 层模型预测
- h2 - 是否可以为 jOOQ 代码生成提供渲染设置?
- php - 之后的一切
我正在设置一个新的 mysql/php 服务器,我试图从 mysql 数据库中提取数据,但
<?php
标记后的所有内容都被切断我尝试将测试html放在
<p>test</p>
php之上,之后只显示html之上的测试html<?php mysql_connect("local
- javascript - 为什么 plyr 没有在任何浏览器中以全屏模式全屏播放视频
- apache - 动态不允许使用 RewriteEngine
- vue.js - 主动搜索字符串并替换它
- python - 如何操作 Shift+Enter 而不是 \n?