Creates a new transaction instance
A configured sequelize Instance
An object with options
Private
Readonly
#afterPrivate
Readonly
#afterPrivate
Readonly
#afterPrivate
#connectionPrivate
finishedReadonly
idPrivate
Readonly
nameReadonly
optionsReadonly
parentPrivate
Readonly
savepointsSame 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
Static
ISOLATION_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
Static
LOCKPossible options for row locking. Used in conjunction with find
calls:
possible options for row locking
// t1 is a transaction
Model.findAll({
where: ...,
transaction: t1,
lock: t1.LOCK...
});
Postgres also supports specific locks while eager loading by using OF:
UserModel.findAll({
where: ...,
include: [TaskModel, ...],
transaction: t1,
lock: {
level: t1.LOCK...,
of: UserModel
}
});
UserModel will be locked but TaskModel won't!
You can also skip locked rows:
// 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
Static
TYPESTypes 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
Private
#dispatchAdds 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
Generated using TypeDoc
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.See