Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: ADO (automatische DB Syncronisierung verhindern)

  Alt 5. Jan 2006, 16:23
Zitat von opfer.der.genauigkeit:
Dass die Datensätze automatisch mit der Datenbank abgeglichen werden hat laut MS schon etwas mit impliziten Transaktionen zu tun.
Die "implicit transactions" schlagen erst zu, wenn ein entsprechender (SQL-)Befehl abgesetzt wurde. Die impliziten Transaktionen finden ja auf Serverseite statt.

Per default speichert ein MyDataSet.Post alle Änderungen unmittelbar in der Datenbank. Dein Ansatz ('BeginTransaction') unterbindet das nicht, sondern sagt dem Server nur, das er die Änderungen noch nicht speichern soll. Der Server wird aber mit Befehlen bombardiert, die er sowieso wieder rückgängig machen wird (per Rollback). Schlimmer ist, das -je nach Einstellung des 'Isolation Level'- Tabellen gesperrt werden, sodaß u.U. kein Anderer mehr mit der DB arbeiten kann, bis Du dein Rollback (oder Commit) ausführst.

Transaktionen dienen eigentlich nur zum Kapseln atomarer Operationen. Klassisches Beispiel wäre eine Anwendung, die eine Banküberweisung tätigt. Dann muss die Belastung des einen Kontos und die Gutschrift des anderen Kontos in einer Transaktion gekapselt werden.

Grundsätzlich sollte man die Transaktionen zu kurz wie möglich offen halten, damit eine echte Mehrbenutzerumgebung gewährleistet ist.


Zum Schluss: Entschuldigung, das ich erst so spät antworte. Ich werd' mich gleich mal geißeln... Warte ...

So, jetzt gehts mir besser

"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat