ガイド リファレンス ソース
public class | ソース

トランザクション

トランザクションオブジェクトは、実行中のトランザクションを識別するために使用されます。これはSequelize.transaction()を呼び出すことによって作成されます。トランザクション下でクエリを実行するには、オプションオブジェクトでトランザクションを渡す必要があります。

参照

静的メンバの概要

静的パブリックメンバ
public static get

ISOLATION_LEVELS: {"READ_UNCOMMITTED": string, "READ_COMMITTED": string, "REPEATABLE_READ": string, "SERIALIZABLE": string}

分離レベルは、sequelize.transactionoptions.isolationLevelを渡すことで、トランザクションごとに設定できます。

public static get

LOCK: object: {"UPDATE": string, "SHARE": string, "KEY_SHARE": string, "NO_KEY_UPDATE": string}

行ロックに使用できるオプション。

public static get

TYPES: {"DEFERRED": string, "IMMEDIATE": string, "EXCLUSIVE": string}

sequelize.transactionoptions.type を渡すことで、トランザクションごとにタイプを設定できます。

コンストラクタの概要

パブリックコンストラクタ
public

constructor(sequelize: Sequelize, options: object)

新しいトランザクションインスタンスを作成します

メンバの概要

パブリックメンバ
public get

LOCK: *

Transaction.LOCK を参照してください

メソッドの概要

パブリックメソッド
public

トランザクションがコミットされた後に実行されるフック

public

async commit(): Promise

トランザクションをコミットします

public

async forceCleanup()

このトランザクションが使用する接続を強制的に閉じます。

public

使用する接続を取得し、接続に正しいオプションを設定するために呼び出されます。

public

async rollback(): Promise

トランザクションをロールバック(中止)します

静的パブリックメンバ

public static get ISOLATION_LEVELS: {"READ_UNCOMMITTED": string, "READ_COMMITTED": string, "REPEATABLE_READ": string, "SERIALIZABLE": string} source

分離レベルは、sequelize.transactionoptions.isolationLevelを渡すことで、トランザクションごとに設定できます。Sequelizeはデータベースのデフォルトの分離レベルを使用します。Sequelizeコンストラクタオプションでoptions.isolationLevelを渡すことで、これを上書きできます。

最初の引数として必要なレベルを渡します

プロパティ

名前タイプ属性説明
READ_UNCOMMITTED *
READ_COMMITTED *
REPEATABLE_READ *
SERIALIZABLE *

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.
}

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...
});
Postgresは、OFを使用することで、Eager Loading中にも特定のロックをサポートしています。
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

sequelize.transactionoptions.type を渡すことで、トランザクションごとにタイプを設定できます。デフォルトはDEFERREDですが、new Sequelizeoptions.transactionTypeを渡すことで、デフォルトのタイプを上書きできます。Sqliteのみ。

最初の引数として必要なレベルを渡します

プロパティ

名前タイプ属性説明
DEFERRED *
IMMEDIATE *
EXCLUSIVE *

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.
}

パブリックコンストラクタ

public constructor(sequelize: Sequelize, options: object) source

新しいトランザクションインスタンスを作成します

パラメータ

名前タイプ属性説明
sequelize Sequelize

設定済みのsequelizeインスタンス

options object

オプションを持つオブジェクト

options.type string
  • オプション

トランザクションのタイプを設定します。Sqliteのみ

options.isolationLevel string
  • オプション

トランザクションの分離レベルを設定します。

options.deferrable string
  • オプション

制約を遅延させるか、すぐにチェックするかを設定します。PostgreSQLのみ

options.readOnly boolean
  • オプション

このトランザクションがデータの読み取りのみに使用されるかどうか。sequelizeが読み取りレプリケーションサーバーを使用できるかどうかを判断するために使用されます。

パブリックメンバ

public get LOCK: * source

Transaction.LOCK を参照してください

パブリックメソッド

public afterCommit(fn: Function) source

トランザクションがコミットされた後に実行されるフック

パラメータ

名前タイプ属性説明
fn Function

コミットされたトランザクションとともに呼び出されるコールバック関数

public async commit(): Promise source

トランザクションをコミットします

戻り値

Promise

public async forceCleanup() source

このトランザクションが使用する接続を強制的に閉じます。例えば、COMMITまたはROLLBACKがエラーになり、トランザクションが壊れた状態のままになり、接続をプールに解放すると危険な場合に、最後の手段として使用されます。

public async prepareEnvironment(useCLS: boolean): Promise source

使用する接続を取得し、接続に正しいオプションを設定するために呼び出されます。設定された環境はすべて、以下のcleanup()でクリーンアップする必要があります。

パラメータ

名前タイプ属性説明
useCLS boolean

デフォルトはtrue:SequelizeでCLS(継続ローカルストレージ)を使用します。CLSを使用すると、トランザクションコールバック内のすべてのクエリは、トランザクションオブジェクトを自動的に受信します。

戻り値

Promise

public async rollback(): Promise source

トランザクションをロールバック(中止)します

戻り値

Promise