BACKOUT TRANSACTION

BACKOUT [TRANSACTION]

このドキュメントでは、次のトピックについて説明します。

構文図で使用されている記号については、「構文記号」を参照してください。

関連ステートメント:ACCEPT/REJECT | AT BREAK | AT START OF DATA | AT END OF DATA | BEFORE BREAK PROCESSING | DELETE | END TRANSACTION | FIND | GET | GET SAME | GET TRANSACTION DATA | HISTOGRAM | LIMIT | PASSW | PERFORM BREAK PROCESSING | READ | RETRY | STORE | UPDATE

関連機能グループ:データベースへのアクセスと更新


関数

BACKOUT TRANSACTION ステートメントは、現在の論理トランザクション内で実行された、すべてのデータベース更新をバックアウトします。このステートメントも、トランザクション中に保持されていたすべてのレコードを解放します。

BACKOUT TRANSACTION ステートメントは、Natural の制御下でデータベーストランザクションが発生した場合にのみ実行されます。どのデータベースに対して、ステートメントが実行されるかは、Natural プロファイルパラメータ ETEND/BACKOUT TRANSACTION ステートメントの実行)の設定に依存します。

  • ET=OFF の場合、トランザクションで影響を受けたデータベースに対してのみ、ステートメントが実行されます。

  • ET=ON の場合、BACKOUT TRANSACTION または END TRANSACTION ステートメントの最後の実行以後に参照された全データベースに対して、ステートメントが実行されます。

Natural が発行する BACKOUT TRANSACTION

ユーザーが端末コマンド(コマンド %% または CLEAR キー)で現在の Natural を中断した場合、Natural によって BACKOUT TRANSACTION ステートメントが発行されます。

詳細については、『端末コマンド』ドキュメントで端末コマンド %% を参照してください。

追加情報

トランザクションバックアウト機能の使用に関する詳細については、『プログラミングガイド』の「データベース更新 - トランザクション処理」セクションおよび「トランザクションのバックアウト」セクションを参照してください。

制限事項

このステートメントは Entire System Server では使用できません。

データベース固有の考慮事項

SQL データベース ほとんどの SQL データベースは作業の論理ユニットが終了するときにすべてのカーソルを閉じるため、BACKOUT TRANSACTION ステートメントをデータベースの更新処理ループ内に指定することはできません。このようなループの後に指定する必要があります。
XML データベース BACKOUT TRANSACTION ステートメントをデータベースの更新処理ループ内に指定することはできません。このようなループの後に指定する必要があります。

** Example 'BOTEX1': BACKOUT TRANSACTION                                
**                                                                      
** CAUTION: Executing this example will modify the database records!    
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 NAME                                                                
  2 DEPT                                                                
  2 LEAVE-DUE                                                           
  2 LEAVE-TAKEN                                                         
*                                                                       
1 #DEPT (A6)                                                            
1 #RESP (A3)                                                            
END-DEFINE                                                              
*                                                                       
LIMIT 3                                                                 
INPUT 'DEPARTMENT TO BE UPDATED:' #DEPT                                 
IF #DEPT = ' '                                                          
  STOP                                                                  
END-IF                                       
*                                            
FIND EMPLOY-VIEW WITH DEPT = #DEPT           
  IF NO RECORDS FOUND                        
    REINPUT 'NO RECORDS FOUND'               
  END-NOREC                                  
  INPUT 'NAME:       ' NAME (AD=O) /         
        'LEAVE DUE:  ' LEAVE-DUE (AD=M) /    
        'LEAVE TAKEN:' LEAVE-TAKEN (AD=M)    
  UPDATE                                     
END-FIND                                     
*                                            
INPUT 'UPDATE TO BE PERFORMED? YES/NO:' #RESP
DECIDE ON FIRST #RESP                        
  VALUE 'YES'                                
    END TRANSACTION                          
  VALUE 'NO'                                 
    BACKOUT TRANSACTION                      
  NONE                                       
    REINPUT 'PLEASE ENTER YES OR NO' 
END-DECIDE
*                                    
END

プログラム BOTEX1 の出力:

DEPARTMENT TO BE UPDATED: MGMT30

MGMT30 部門の結果:

NAME:        POREE
LEAVE DUE:   45
LEAVE TAKEN: 31

確認照会:

UPDATE TO BE PERFORMED  YES/NO: NO