DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: SQL | Thema: Re: commit rollback | Von: m No ( 27.03.2004 12:50)

ROLLBACK stellt den ursprünglichen Zustand der Tabellen, Tabellenmemodateien und Indexdateien vor Beginn der Transaktion wieder her.

Wenn Sie Datensätze in einer Datenbank ändern, die Bestandteil einer Transaktion ist, haben andere Benutzer im Netzwerk weder Schreib- noch Lesezugriff auf die Datensätze, bis Sie die Transaktion beenden.

Wenn andere Benutzer im Netzwerk versuchen, auf die Datensätze zuzugreifen, die Sie geändert haben, müssen diese warten, bis Sie Ihre Transaktion beendet haben. Bis die Datensätze wieder verfügbar sind, erhalten sie die Meldung "Datensatz nicht verfügbar … Bitte warten". Aus diesem Grund müssen Transaktionen so kurz wie möglich gehalten werden oder zu Zeiten geringer Datenbanknutzung ausgeführt werden.

ROLLBACK macht alle Änderungen rückgängig, die während der aktuellen Transaktion vorgenommen wurden. Wenn die Transaktion verschachtelt ist, werden nur die seit der letzten Eingabe von BEGIN TRANSACTION durchgeführten Änderungen rückgängig gemacht. Die Programmausführung wird mit der nächsten Anweisung fortgesetzt.

Wenn Datensatz- oder Dateisperren eingerichtet wurden, werden diese freigegeben.

Beispiel
Im folgenden Beispiel wird die Tabelle customer in der Datenbank testdata geöffnet. Für die Tabelle customer wird eine optimistische Tabellenpufferung gesetzt. Die Inhalte der Felder cust_id und company werden angezeigt. Anschließend wird der Inhalt des Feldes company durch die gepufferten Daten ersetzt.

Durch Aufruf von BEGIN TRANSACTION wird eine Transaktion gestartet. Mit Hilfe von TABLEUPDATE werden die Änderungen in die Tabelle geschrieben. Die neuen Inhalte werden angezeigt und durch den Aufruf von ROLLBACK werden die ursprünglichen Inhalte des company-Feldes wiederhergestellt. Die Felder cust_id und company werden erneut angezeigt, wobei das Feld company wieder seine ursprünglichen Werte enthält.

CLOSE DATABASES
CLEAR

* Transactions are only supported within a DBC
OPEN DATABASE (HOME(2) + 'Data\testdata')

SET MULTILOCKS ON && Required for buffering

USE customer
=CURSORSETPROP("Buffering",5)
? 'The original company field'
LIST FIELDS cust_id, company NEXT 5
REPLACE ALL company WITH "***" && Change field contents

BEGIN TRANSACTION
=TABLEUPDATE(.T.)
GO TOP
? 'The modified company field'
LIST FIELDS cust_id, company NEXT 5
ROLLBACK && Restore original field contents

=TABLEREVERT(.T.)
GO TOP
? 'The restored company field'
LIST FIELDS cust_id, company NEXT 5


Ich hoffe ich konnte dir helfen!
mfg

no


Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Advanced Developers Conference vom 14.-15. Februar 2011

© Copyright 2003 ppedv AG