Forguncy 8 オンラインヘルプ
Forguncyの使い方 / サーバーオブジェクト / コマンド(サーバーサイド) / トランザクション
このトピックで
    トランザクション
    このトピックで

    トランザクションコマンドは、本コマンドの子コマンドとして設定した一連の処理におけるデータベースへの更新操作を1つにまとめ、その操作に対して一貫性を確保する機能です。トランザクションコマンドによってまとめられた操作は、完全に実行されるか、まったく実行されないかのどちらかとなります。トランザクション内の特定の更新操作においてエラーが発生した場合、その時点までの操作はすべてロールバックされて元に戻るため、不完全な状態のデータがテーブル上に残ってしまうことがありません。

    [テーブルデータの更新]コマンド以外にも、データベースに対して操作が発生するコマンド(たとえば[CSVインポート/エクスポート]コマンド)も本コマンドによるトランザクションの対象となります。ただし、そのコマンドの処理全体ではなく、あくまでもデータベースに対する操作処理のみが対象となることに注意してください。たとえば、エクスポートされたCSVファイルがロールバックよって削除されることはありません。同様に、レコードの削除により削除された添付ファイルがロールバックによって復元されることもありません。

    なお、指定するトランザクション分離レベルにより、トランザクションの分離性(ほかのトランザクションに影響を与えいない性質)とパフォーマンスが異なります。

    サーバーサイドコマンドにおいてテーブルデータの更新コマンドを使用する場合は、本コマンドと組み合わせて使用することをお勧めします。

    分離レベル

    [分離レベル]を「既定」に設定した場合、データベースの種類により分離レベルは異なります。また、データベースの種類に依存して、使用できないトランザクション分離レベルが存在します。ODBCデータソースの場合、トランザクション分離レベルを使用できるかどうかは接続先のデータソースやODBCドライバーに依存します。無効なトランザクション分離レベルを設定した場合、実行時にエラーとなります。

    なお、トランザクション分離レベルはForguncy特有の設定ではなく、データベースにおける一般的な概念です。それぞれの分離レベルの詳細については、各データベースのドキュメント等を参照してください。

    分離レベル

    内部データベース(SQLite)

    SQL Server

    Oracle Database

    MySQL

    既定

    直列化可能(SERIALIZABLE)

    確定済みデータを読み取る(READ COMMITTED)

    確定済みデータを読み取る(READ COMMITTED)

    読み取り対象のデータを読み取る(REPEATABLE READ)

    確定していないデータも読み取る(READ UNCOMMITTED)

    無効

    有効

    無効

    有効

    確定済みデータを読み取る(READ COMMITTED)

    無効

    有効

    有効

    有効

    読み取り対象のデータを読み取る(REPEATABLE READ)

    無効

    有効

    無効

    有効

    直列化可能(SERIALIZABLE)

    有効

    有効

    有効

    有効

    使用例

    本コマンドの使用法は配列型のパラメーターを参照してください。