XDM/SDの排他制御には,次の二つの方法があります。
- C++クラスライブラリを利用する方法
基本的にはC++クラスライブラリを利用して排他制御を行ないます。
簡易版クラスではResultSetに結果を得るときDBRResultSetクラスのExecuteメソッドの引数で,詳細版クラスではResultSetに結果を得るときSetResultSetTypeメソッドの引数で排他の種類を設定します。排他の種類によって,次のオプションが設定されます。
TYPE_EXCLUSIVE:LOCK SU
TYPE_NONE:付加しません(SDEXCLUSIVE値が仮定されます)。
TYPE_WAIT:LOCK SR
TYPE_NOWAIT:LOCK NR
TYPE_SHARED:LOCK SR
各オプションの詳細については,マニュアル「Database Connection Server」を参照してください。
- Database Connection ServerのRDML文で指定する方法
Database Connection ServerのRDML文のSELECT文にLOCK句を付加して排他制御を指定することもできます。
ただし,資源競合時に共用できない場合,エラーになります。
また,Database Connection Serverの起動制御文の一つであるコントロール空間起動制御文でも指定できます。コントロール空間起動制御文のSDPARAMセクションのオペランドSDEXCLUSIVE,SDLOCKRANGE,SDRELEASEで指定できます。
起動制御文については,マニュアル「Database Connection Server」を参照してください。