Транзакция
Объект транзакции используется для идентификации текущей транзакции. Он создаётся вызовом Sequelize.transaction(). Чтобы выполнить запрос в рамках транзакции, вы должны передать объект транзакции в объект параметров.
Краткое описание статических членов
| Статические публичные члены | ||
|---|---|---|
| public static get | ISOLATION_LEVELS: {"READ_UNCOMMITTED": string, "READ_COMMITTED": string, "REPEATABLE_READ": string, "SERIALIZABLE": string} Уровни изоляции можно задавать для каждой транзакции, передавая | |
| public static get | Возможные варианты блокировки строк. | |
| public static get | Типы можно задавать для каждой транзакции, передавая | |
Краткое описание конструкторов
| Публичный конструктор | ||
|---|---|---|
| public | constructor(sequelize: Sequelize, options: Object) Создаёт новый экземпляр транзакции | |
Краткое описание членов
| Публичные члены | ||
|---|---|---|
| public get | LOCK: * См. Transaction.LOCK | |
Краткое описание методов
| Публичные методы | ||
|---|---|---|
| public | afterCommit(fn: Function) Обработчик, который выполняется после подтверждения транзакции | |
| public | Подтвердить транзакцию | |
| public | Отменить (прервать) транзакцию | |
Статические публичные члены
public static get ISOLATION_LEVELS: {"READ_UNCOMMITTED": string, "READ_COMMITTED": string, "REPEATABLE_READ": string, "SERIALIZABLE": string} source
Уровни изоляции можно устанавливать для каждой транзакции, передав options.isolationLevel в sequelize.transaction. Sequelize использует уровень изоляции по умолчанию для базы данных, вы можете переопределить его, передав options.isolationLevel в опциях конструктора Sequelize.
Передайте желаемый уровень в качестве первого аргумента:
Свойства:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| READ_UNCOMMITTED | * | ||
| READ_COMMITTED | * | ||
| REPEATABLE_READ | * | ||
| SERIALIZABLE | * |
Пример:
return sequelize.transaction({isolationLevel: Sequelize.Transaction.ISOLATION_LEVELS.SERIALIZABLE}, transaction => {
// your transactions
}).then(result => {
// transaction has been committed. Do something after the commit if required.
}).catch(err => {
// do something with the err.
}); public static get LOCK: Object: {"UPDATE": string, "SHARE": string, "KEY_SHARE": string, "NO_KEY_UPDATE": string} source
Возможные варианты блокировки строк. Используются совместно с вызовами find.
Свойства:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| UPDATE | * | ||
| SHARE | * | ||
| KEY_SHARE | * |
Только Postgres 9.3+ | |
| NO_KEY_UPDATE | * |
Только Postgres 9.3+ |
Возвращаемое значение:
| Object |
Свойства возвращаемого значения:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| UPDATE | * | ||
| SHARE | * | ||
| KEY_SHARE | * |
Только Postgres 9.3+ | |
| NO_KEY_UPDATE | * |
Только Postgres 9.3+ |
Пример:
// t1 is a transaction
Model.findAll({
where: ...,
transaction: t1,
lock: t1.LOCK...
}); 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 public static get TYPES: {"DEFERRED": string, "IMMEDIATE": string, "EXCLUSIVE": string} source
Типы можно устанавливать для каждой транзакции, передав options.type в sequelize.transaction. По умолчанию DEFERRED, но вы можете переопределить тип по умолчанию, передав options.transactionType в new Sequelize. Только Sqlite.
Передайте желаемый уровень в качестве первого аргумента:
Свойства:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| DEFERRED | * | ||
| IMMEDIATE | * | ||
| EXCLUSIVE | * |
Пример:
return sequelize.transaction({type: Sequelize.Transaction.TYPES.EXCLUSIVE}, transaction => {
// your transactions
}).then(result => {
// transaction has been committed. Do something after the commit if required.
}).catch(err => {
// do something with the err.
}); Публичные конструкторы
public constructor(sequelize: Sequelize, options: Object) source
Создаёт новый экземпляр транзакции
Параметры:
| Имя | Тип | Атрибут | Описание |
|---|---|---|---|
| sequelize | Sequelize |
Настроенный экземпляр sequelize | |
| options | Object |
Объект с параметрами | |
| options.type | строка |
|
Устанавливает тип транзакции. Только для Sqlite |
| options.isolationLevel | строка |
|
Устанавливает уровень изоляции транзакции. |
| options.deferrable | строка |
|
Устанавливает ограничения, которые должны быть отложены или проверены немедленно. Только для PostgreSQL |
Публичные члены
public get LOCK: * source
См. Transaction.LOCK
Публичные методы
Copyright © 2014–present Sequelize contributors
Licensed under the MIT License.
https://sequelize.org/v5/class/lib/transaction.js~Transaction.html