トランザクションコマンドは、本コマンドの子コマンドとして設定した一連の処理におけるデータベースへの更新操作を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) |
有効 |
有効 |
有効 |
有効 |
本コマンドの使用法は配列型のパラメーターを参照してください。