備考
このメソッドのコール後、CommitTrans
が発行されるまで、データベース・トランザクションはコミットされません。Rollback
メソッドを使用すると、セッションをロールバックできます。BeginTransメソッドでトランザクションをすでに開始しているときに、BeginTrans
メソッドを再度使用するとエラーが発生します。
BeginTrans
発行後に、グローバル・トランザクション内のダイナセットの所定の行でUpdate
またはDelete
メソッドに失敗すると、Update
またはDelete
メソッドをコールした行がロックされたままになることに注意してください。このロックは、CommitTrans
またはRollback
メソッドをコールするまで解除されません。
注意: OraDatabase オブジェクトがMicrosoft Transaction Server(MTS)にリストされていて、グローバルMTSトランザクションの一部である場合、このメソッドは無効です。 |
例
この例では、BeginTrans
メソッドを使用してダイナセットの一連の編集を1つのトランザクションにグループ化し、Rollback
を使用してその変更内容を取り消す方法を示します。このコードをフォームの定義セクションにコピーしてください。次に[F5]を押します。
Sub Form_Load () 'Declare variables Dim OraSession As OraSession Dim OraDatabase As OraDatabase Dim OraDynaset As OraDynaset Dim fld As OraField 'Create the OraSession Object. Set OraSession = CreateObject("OracleInProcServer.XOraSession") 'Create the OraDatabase Object by opening a connection to Oracle. Set OraDatabase = OraSession. OpenDatabase("ExampleDb", _ "scott/tiger", 0&) 'Create the OraDynaset Object. Set OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0&) 'Start Transaction processing. OraSession.BeginTrans 'Setup a field object to save object references. Set fld = OraDynaset.Fields("sal") 'Traverse until EOF is reached, setting each employees salary to zero Do Until OraDynaset.EOF = True OraDynaset.Edit fld.value = 0 OraDynaset.Update OraDynaset.MoveNext Loop MsgBox "All salaries set to ZERO." 'Currently, the changes have NOT been committed to the database. 'End Transaction processing. Using RollbackTrans 'means the rollback can be canceled in the Validate event. OraSession.Rollback 'MsgBox "Salary changes rolled back." End Sub