Skip to main content
Skip table of contents

Event "vor Transaktions-Bestätigung (Commit)"

Event "vor Transaktions-Bestätigung (Commit)"


Der Aufruf erfolgt vor Abschluss (Commit) jeder Datenbank-Transaktion in BE. Mit DBRollBack() können an dieser Stelle die Änderungen explizit rückgängig gemacht werden. Durch Rückgabe von "False", kann dann eine Exception ausgelöst werden.

Wichtig: Die Rückgabe von "False" bzw. ein DBRollBack() sollte nur mit äußerster Vorsicht eingesetzt und ausführlich getestet werden, da es zu Folge-Programmfehlern auf Grund eines bewussten Abbruchs kommen könnte.

Beispiel

CODE
| nEvtNo:P1, oConnection:P2,
  oOwner, aTables, aLocks, oTable, i, k, cText |

// Vor Bestätigung der Transaktion (vor Commit)
// Rückgabe   : True, <Leer> = Transaktion bestätigen (Commit)
//              False        = Transaktion abbrechen (Rollback) und Fehler auslösen!
cText   := '',

aTables := AdsGetConnectTables(oConnection),

// rein informativ: Owner-Klassen-Hierarchie ermitteln
oOwner := oConnection,
while not Empty(oOwner) do
   cText := ClassName(oOwner) + '.' + cText,
   oOwner:= GetOwner(oOwner),
end,
cText += crlf,

// Alle an der Transaktion beteiligten Tabellen ermitteln
for i := 1 to ALen(aTables) do
   oTable := aTables[i],
   // Alle potenziell veränderten Sätze jeder Tabelle ermitteln
   aLocks := AdsGetUserLocks(oTable),
   if ALen(aLocks) > 0 then
     cText  += oTable.AliasName + crlf,
     for k := 1 to ALen(aLocks) do
        cText  += '     Satz-Nr.: ' + Str(aLocks[k]) + crlf,
     next,
   endif,
next,

// Ggf. Exception (kein direktes RollBack!) auslösen
Jn( 'Transaktion fortsetzen ?' + crlf + crlf + cText )


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.