PDA

Vollständige Version anzeigen : Verschachtelte Transaktionen


FrankH
09.08.2001, 17:38
Hallo zusammen,

weiß jemand, ob und wie man Transaktionen in A97 verschachteln kann?
Ich will in einer DB eine längere Abarbeitung per Programm machen. Dabei wird erst in einer tbl ein DS angelegt, in eine weitere werden aus verknüpften DB´s DS importiert. Diese werden dann entsprechend manipuliert usw.
Jetzt möchte ich das ganze so gestalten, daß im Fehlerfall egal bei welchem Schritt die ganze Sache rückgängig gemacht wird. Da aber in den Teilschritten per SQL auf Daten zugegriffen werden muß, die in einem vorangegangenen Schritt erst angelegt wurden, bekomme ich bei nur einer Transaktion entsprechende Fehlermeldungen, da ja die DS noch nicht in den Tabellen abgelegt sind.
Kann man das umgehen, indem man in die (äußere) Transaktion weitere Transaktionen verschachtelt?

Danke für die Hilfe.
Frank

Manuela Kulpa
09.08.2001, 19:38
<font face="Verdana" size="2">Hallo Kvlado!

Wenn du innerhalb eines Transaktionsraums weitere Transaktionsräume eröffnest, erhältst du verschachtelte Transaktionen. Jet unterstützt eine Verschachtelungstiefe von fünf ineinander liegenden Transaktionen, wobei jeder Aufruf von BeginTrans eine Ebene tiefer führt und jeder Aufruf von CommitTrans bzw. Rollback eine Ebene höher. Aus logischen Gründen ist es weder sinnvoll noch möglich, Transaktionen auf einer höheren Ebene abzuschließen oder zu widerrufen, wenn noch ein Transaktionsraum auf tieferer Ebene geöffnet ist. Verschachtelte Transaktionen werden erst gültig (bzw. widerrufen), wenn die höchste Transaktion abgeschlossen ist.

Wenn du innerhalb einer Transaktion weitere logisch unabhängige Transaktionsräume eröffnen willst, musst du dafür weitere Workspace-Objekte anlegen und die Transaktion über die entsprechenden Objektvariablen in diesen Arbeitsbereich abwickeln.

Weitere Informationen findest du auch hier:

<a href="http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=45429" target="_blank">BeginTrans und Rollback</a>

HTH</font>

FrankH
09.08.2001, 19:52
Hallo Manuela,

genau mit diesem Satz

Verschachtelte Transaktionen werden erst gültig (bzw. widerrufen), wenn die höchste Transaktion abgeschlossen ist.

ist natürlich mein Problem "erschlagen". Somit muß ich in einer Transaktionsebene bleiben und dem Anwender bei groben Fehlern das "Aufräumen" überlassen.

Trotzdem danke für die detaillierten Informationen.

Frank