4D v18

dataStore.startTransaction( )

ホーム

 
4D v18
dataStore.startTransaction( )

dataStore.startTransaction( )  


 

説明  

dataStore.startTransaction( ) メソッドは、適用するデータストアに合致するデータベースとの、カレントプロセス内でのトランザクションを開始します。トランザクションプロセス中にデータストアのエンティティに加えられた変更は、トランザクションが確定されるかキャンセルされるまで一時的に保管されたままになります。

注: このメソッドがメインのデータストア(ds コマンドで返されるデータストア)で呼ばれた場合、トランザクションはメインのデータストアとその下にあるデータベースで実行される全てのオペレーションに適用されます。これはつまりそこで実行されるORDA とクラシック言語も含まれます。

複数のトランザクションをネストすること(サブトランザクション)が可能です。個々のトランザクションまたはサブトランザクションは、それぞれキャンセルするか確定される必要があります。メインのトランザクションがキャンセルされた場合、それに付随するサブトランザクションは (たとえ個々に dataStore.validateTransaction( ) メソッドによって評価されていたとしても) すべてキャンセルされるという点に注意してください。

例題  

 C_OBJECT($connect;$ds;$person;$status)
 C_TEXT($choice)
 C_BOOLEAN($error)
 
 Case of
    :($choice="local")
       $ds:=ds
    :($choice="remote")
       $connect:=New object("hostname";"111.222.3.4:8044")
       $ds:=Open datastore($connect;"myRemoteDS")
 End case
 
 $ds.startTransaction()
 $person:=$ds.Persons.query("lastname=:1";"Peters").first()
 
 If($person#Null)
    $person.lastname:="Smith"
    $status:=$person.save()
 End if
 ...
 ...
 If($error)
    $ds.cancelTransaction()
 Else
    $ds.validateTransaction()
 End if



参照 

dataStore.cancelTransaction( )
dataStore.validateTransaction( )
START TRANSACTION

 
プロパティ 

プロダクト: 4D
テーマ: ORDA - データストア

This command can be run in preemptive processes

 
ページの目次 
 
履歴 

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v18)