Reputation: 461
Sequelize rollback doesn't work on my transaction.
This is an example code:
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();
});
});
I checked the console:
Executing (aaf94974-d646-4056-9cfa-0c53f1b1b3e3): START TRANSACTION;
Executing (aaf94974-d646-4056-9cfa-0c53f1b1b3e3): SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Executing (default): DELETE FROM Task WHERE id=6
Executing (aaf94974-d646-4056-9cfa-0c53f1b1b3e3): ROLLBACK;
But the rollback doesn't work.
Upvotes: 3
Views: 3554
Reputation: 362
This not described in sequalize documentation, but I find usage example in sequalize tests.
return this.sequelize.query(query, { transaction: t }).bind(this).then(function() {
return this.User.create({ name: 'foo' });
})
So, you just need to pass transaction
option into query
call:
return sequelize.query('DELETE FROM Task WHERE id=:id',
{
replacements:{"id":id},
type: sequelize.QueryTypes.SELECT
})
Upvotes: 2