Creates a new transaction instance
A configured sequelize Instance
The transaction options.
Same as Transaction.LOCK, but can also be called on instances of transactions to get possible options for row locking directly from the instance.
use the Lock export
Get the root transaction if nested, or self if this is a root transaction
StaticISOLATION_Isolation levels can be set per-transaction by passing options.isolationLevel to sequelize.transaction.
Sequelize uses the default isolation level of the database, you can override this by passing options.isolationLevel in Sequelize constructor options.
Pass in the desired level as the first argument:
try {
const result = await sequelize.transaction({isolationLevel: Sequelize.Transaction.ISOLATION_LEVELS.SERIALIZABLE}, transaction => {
// your transactions
});
// transaction has been committed. Do something after the commit if required.
} catch(err) {
// do something with the err.
}
use the IsolationLevel export
StaticLOCKPossible options for row locking. Used in conjunction with find calls:
possible options for row locking
UserModel.findAll({
where: ...,
include: [TaskModel, ...],
transaction: t1,
lock: {
level: t1.LOCK...,
of: UserModel
}
});
UserModel will be locked but TaskModel won't!
// t1 is a transaction
Model.findAll({
where: ...,
transaction: t1,
lock: true,
skipLocked: true
});
The query will now return any rows that aren't locked by another transaction
use the Lock export
StaticTYPESTypes can be set per-transaction by passing options.type to sequelize.transaction.
Default to DEFERRED but you can override the default type by passing options.transactionType in new Sequelize.
Sqlite only.
Pass in the desired level as the first argument:
try {
await sequelize.transaction({ type: Sequelize.Transaction.TYPES.EXCLUSIVE }, transaction => {
// your transactions
});
// transaction has been committed. Do something after the commit if required.
} catch(err) {
// do something with the err.
}
use the TransactionType export
Adds a hook that is run after a transaction is committed.
A callback function that is called with the transaction
Adds a hook that is run after a transaction is rolled back.
A callback function that is called with the transaction
Adds a hook that is run after a transaction completes, no matter if it was committed or rolled back.
A callback function that is called with the transaction
Commit the transaction.
Called to acquire a connection to use and set the correct options on the connection.
We should ensure all the environment that's set up is cleaned up in cleanup() below.
Rollback (abort) the transaction
Changes the isolation level of the transaction.
The transaction object is used to identify a running transaction. It is created by calling
Sequelize.transaction(). To run a query under a transaction, you should pass the transaction in the options object.Transaction
See