Rollback

式エディタ > 関数ディレクトリ

 

トランザクションのロールバック

ネストレベルを指定し、その位置までトランザクションをロールバックします。

構文:

Rollback(論理値,ネストレベル)

パラメータ:

論理値…確認メッセージの表示の有無を指定します。

  • True…ロールバックの際に「トランザクションをロールバックしますか?」という確認メッセージが表示されます。

  • False…ロールバックの際に確認のメッセージは表示されません。

ネストレベル…数値。どのレベルまでロールバックするかを示す以下の数値です。

  • 1…最も内側のネストトランザクションをロールバックします。

  • 2…最も内側のすぐ上位のトランザクションをロールバックします。

  • 0…最も外側のトランザクションをロールバックします。

戻り値:

論理値

  • True…トランザクションがロールバックされた時

  • False…トランザクションがアボートされた時

例:

Rollback('TRUE'LOG,0)

注意事項:

  • この関数は、物理トランザクションモードの場合、使用するDBMSに対してトランザクションの破棄を行います。遅延トランザクションモードの場合、Magicエンジンのデータ処理内でトランザクションの破棄を行います。

  • ネストレベルは、遅延トランザクションの場合はネスト遅延を設定したレベルで制御できます。一方、物理トランザクションの場合は、もっとも外側のレベルのみサポートしています。

  • 現在のプログラム外のレベルにロールバックするネストレベルは指定しないでください。

  • 通常、「トランザクションロールバック」は、データベースエラーまたはシステムクラッシュのために用意されていますが、アプリケーションに関連する例外状況の処理にも役立ちます。

  • 例えば、財務トランザクションを処理するバッチプログラムがあり、現在、マスターレコードの残高の更新が行われていたとします。更新時、カレントのトランザクションレコードの読込後、通常は\5,000 から\100,000 までの間にある残高が\10,000,000 を超えていました。この場合、数字が余りにも大きく、間違いである可能性もあることから、マスターレコードや関連レコードを更新しない場合があります。こういった時には、残高をチェックする条件付きの[アクション]処理コマンドでRollback関数を使用することで、このような状況に対して対処が可能になります。

  • リッチクライアントタスクの場合は、Rollback(FALSE'LOG,1)のみがサポートされます。これ以外の値は'FALSE'LOGまたは1と評価されます。