原始查询的 Sequelize 事务回滚不起作用
Sequelize transactions rollback on raw queries doesn't work
Sequelize 回滚对我的事务不起作用。
这是示例代码:
return sequelize.transaction({
isolationLevel: "SERIALIZABLE",
autocommit: false
},function (t) {
return sequelize.query('DELETE FROM Task WHERE id=:id',
{
replacements:{"id":id},
type: sequelize.QueryTypes.SELECT
})
.then(function () {
// the query was successful but I still want to roll back
t.rollback();
});
});
我检查了控制台:
正在执行 (aaf94974-d646-4056-9cfa-0c53f1b1b3e3):开始交易;
正在执行 (aaf94974-d646-4056-9cfa-0c53f1b1b3e3):设置会话事务隔离级别可序列化;
正在执行(默认):DELETE FROM Task WHERE id=6
正在执行 (aaf94974-d646-4056-9cfa-0c53f1b1b3e3):ROLLBACK;
但是回滚不起作用。
这在 sequelize 文档中没有描述,但我发现 usage example in sequalize tests。
return this.sequelize.query(query, { transaction: t }).bind(this).then(function() {
return this.User.create({ name: 'foo' });
})
因此,您只需将 transaction
选项传递给 query
调用:
return sequelize.query('DELETE FROM Task WHERE id=:id',
{
replacements:{"id":id},
type: sequelize.QueryTypes.SELECT
})
Sequelize 回滚对我的事务不起作用。
这是示例代码:
return sequelize.transaction({
isolationLevel: "SERIALIZABLE",
autocommit: false
},function (t) {
return sequelize.query('DELETE FROM Task WHERE id=:id',
{
replacements:{"id":id},
type: sequelize.QueryTypes.SELECT
})
.then(function () {
// the query was successful but I still want to roll back
t.rollback();
});
});
我检查了控制台:
正在执行 (aaf94974-d646-4056-9cfa-0c53f1b1b3e3):开始交易;
正在执行 (aaf94974-d646-4056-9cfa-0c53f1b1b3e3):设置会话事务隔离级别可序列化;
正在执行(默认):DELETE FROM Task WHERE id=6
正在执行 (aaf94974-d646-4056-9cfa-0c53f1b1b3e3):ROLLBACK;
但是回滚不起作用。
这在 sequelize 文档中没有描述,但我发现 usage example in sequalize tests。
return this.sequelize.query(query, { transaction: t }).bind(this).then(function() {
return this.User.create({ name: 'foo' });
})
因此,您只需将 transaction
选项传递给 query
调用:
return sequelize.query('DELETE FROM Task WHERE id=:id',
{
replacements:{"id":id},
type: sequelize.QueryTypes.SELECT
})