![]() 今回はトランザクションにまつわる話題を取り上げます。トランザクションと聞くと、障害時の復旧対策がまず思い付きますが、実はトランザクションの機能はプログラムのロジックの一部として利用されることも多いのです。 例えば、受注伝票入力のプログラムがあったとして、オペレータが受注伝票の入力途中で入力作業をキャンセルしたいと思ったときの場面を想定します。 通常、受注入力プログラムの構造は親子タスクの構造となっており、ヘッダ・フッタ部分の入力と、明細入力部分が分離しています。このとき、明細入力を終えて親タスクのヘッダ部分に戻ったときに、取消キーである「F2」キーまたは V10 以降では「Ctrl + F2」キーを押すと、親タスクは入力が取り消されてレコードは作成されませんが、子タスクでは明細レコードがゴミデータとしてテーブルに残ってしまいます。 たいていの場合はこれに対処するために明細行の削除バッチを作成して、親レコードの入力がキャンセルされたら子レコードはバッチで削除するというロジックを組み込むかと思うのですが、実はトランザクションの機能を利用すればバッチタスクを作成しなくても、簡単に子レコードの入力をキャンセルすることができるようになるのです。 |