CdbrEqlStatement::ChangeLockTypeメソッド
機能
形式
DmaBoolean ChangeLockType(
DmaInteger32 lLockType)
詳細
検索結果(edmSQL文の実行結果)として取得するオブジェクトに設定するロック種別を変更するメソッドです。
このメソッドで変更したロック種別は,CdbrEqlStatement::Executeメソッドのコール時に有効になります。
CdbrEqlStatement::Initializeメソッドがコールされていない状態でこのメソッドをコールすると,エラーになります。また,戻り値がDMA_FALSEの場合,設定したロック種別は保証できません。
引数
lLockType
検索結果(edmSQL文の実行結果)として取得したオブジェクトに設定するロックの種別を指定します。
次に示す値のどれかを指定してください。これら以外のロック種別を指定した場合にはエラーになります。
- DBR_WITHOUT_LOCK
ロックを設定しません。
- DBR_LOCK_READ
readロックを設定します。このロックを設定した場合,ほかのクライアントからwriteロックを設定できません。
- DBR_LOCK_WRITE
排他的なwriteロックを設定します。このロックを設定した場合,ほかのクライアントからreadロックおよびwriteロックを設定できません。
- DBR_LOCK_READ_FOR_UPDATE
readロックを設定します。ただしこの場合は,検索結果として取得したオブジェクトを更新または削除できます。
このロックは,次に示すような理由でwriteロックを設定できない場合で,検索結果を分割して取得(CdbrEqlStatement::ChangeGetObjCountメソッドで結果取得件数に-1以外の値を指定し,かつ,CdbrEqlStatement::GetResultメソッドの第1引数bSearchContinueをDMA_TRUEにして実行)し,その取得したオブジェクトを更新または削除するようなときに指定します。
- 検索対象クラスを結合している
- writeロックを設定したくない
- 注意
- DBR_WITHOUT_LOCKを指定した場合,検索(edmSQL文)実行時にデータベースはロックされません。このため,取得した結果のオブジェクトを使用する段階で,すでにデータベースの内容が書き換えられている可能性があります。取得結果のオブジェクトとデータベースのデータの整合性を確保したい場合は,ロックタイプを指定し,明示的にロックを設定するようにしてください。
- DBR_LOCK_READ_FOR_UPDATEを指定した場合には,データベース内に作業表(検索結果の整合性を更新作業から守るために検索結果を一時的にコピーしておく作業領域)が作成されます。このため,DBR_LOCK_READを指定した場合より処理速度が遅くなる可能性があります。したがって,このロックタイプは,検索対象クラスを結合していて,かつ,取得した結果のオブジェクトを更新または削除する場合に限って使用するようにしてください。
戻り値
DMA_TRUE 正常終了
DMA_FALSE 異常終了
戻り値の詳細
major_code | minor_code | 説明 | 対処 |
---|
ERR_DBR | ERR_EQL_NOT_INITIALIZE | 初期化が実行されていません。 | 初期化を実行してください。 |
ERR_DMA | DMARC_BAD_PARAMETER | 不正な引数が入力されました。 | 正しい引数を指定してください。 |