AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Transaktionsfrage

Ein Thema von haentschman · begonnen am 29. Jan 2008 · letzter Beitrag vom 30. Jan 2008
Antwort Antwort
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.299 Beiträge
 
Delphi 12 Athens
 
#1

Transaktionsfrage

  Alt 29. Jan 2008, 17:38
Datenbank: firebird • Version: 2.0 • Zugriff über: Zeos
Hallo alle...

- das mit der Transaktionssteuerung ist mir klar und ist auch häufig in Gebrauch.

folgende Situation:

- ein Formular mit Eingabefeldern aus verschiedenen Tabellen.
- die Eingaben des gesamten Formulars sind in eine Transaktion gepackt.
- beim Start - StartTransaktion , beim Schließen Commit oder Rollback je nach Benutzereingabe

- innerhalb des Formulars sollte der Einfachheit halber ein neuer Auftrag erzeugt werden.
- die Erzeugung des Auftrages ist für sich eine Transaktion.

da beide Transaktionen zwangsläufig in einander verschachtelt sind, wird der Auftrag nur beim Commit der ersten Transaktion erzeugt...ist ja richtig.
---läßt sich das mit einem Trick umgehen, daß beide Transaktionen nicht verschachtelt sondern parallel laufen ?

Danke für Infos
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: Transaktionsfrage

  Alt 29. Jan 2008, 17:45
Um Gottes willen, willst Du die Transaktion offen halten, während der Benutzer zur Mittagspause ist, sich zusäuft, ins Krankenhaus muss, dann zur Reha und schließlich in den Ruhestand? Dann ist die Transaktion bis zum Sankt Nimmerleinstag offen und blockiert alles und jeden.

Nee, nee.

Lieber so:
Code:
Daten laden.
Daten verändern lassen.
Daten speichern:
  Transaktion starten
  Prüfen, ob in der Zwischenzeit Daten verändert wurden und Konflikte lösen
  Daten in die DB
  Transaktion Committen
Alternativ kannst Du dir eine Lock-Tabelle basteln, in der die zur Bearbeitung geladenen Objekte befinden. Vor dem Laden 'zum Bearbeiten' prüfst Du, ob der Datensatz schon in der Tabelle ist, wenn ja, sagst Du 'tut mir leid, der Datensatz ist gesperrt'.

Auch das hat Nachteile, wenn eben der andere zur Mittagspause geht und bla bla bla.

Ich bevorzuge die sanfte Methode der Konfliktlösung, die nur dann auftritt, wenn mehrere Leute die gleichen Daten eines Datensatzes ändern. Und wann passiert das denn? Bei schlecht organisierten Chaosabteilungen?

Delphi bietet übrigens so einen Mechanismus mit den TClientDatasets und dem 'Reconcile-Dialog'..
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.299 Beiträge
 
Delphi 12 Athens
 
#3

Re: Transaktionsfrage

  Alt 29. Jan 2008, 18:09
prinzipiell hast Du ja Recht...

- die Form enthält mehrere Registerkarten wo Daten aus verschiedenen Tabellen eingefügt, gelöscht, bearbeitet werden.
- einige Daten sind Listen in DBGrid´s wo Daten per Append / Delete die Query verändern.
- da die Query´s gleich ein SQL absetzen muß ich das in einer Transaktion abfangen, da alle Informationen nur gemeinsam in die Tabellen eingetragen werden dürfen.

- der Gedanke mit der offenen Transaktion gefällt mir selbst nicht wirklich.

wenn ich den Inhalt der Querys erst nach 'Bestätigung' schreiben könnte wäre das Problem vom Tisch.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Transaktionsfrage

  Alt 29. Jan 2008, 19:43
Seit wann kann Zeos mehr als eine Transaktion verwalten ? Habe ich was verpasst ?
Gruß
Hansa
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: Transaktionsfrage

  Alt 29. Jan 2008, 21:19
Gibt es unter Zeos nicht soetwas wie 'CachedUpdates'?

Und wenn nicht, dann trenne dich von datensensitiven Steuerelementen.

Objekt laden => darstellen => verändern => Objekt speichern.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: Transaktionsfrage

  Alt 29. Jan 2008, 21:57
würde ich mal durchlesen :

http://www.delphipraxis.net/internal...ansaktion+zeos

Zeos lässt sich vielleicht mit FB 1.0 einsetzen, aber der Rest seit 2003/4 ?? fehlt so ziemlich.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Transaktionsfrage

  Alt 30. Jan 2008, 08:22
Zitat von Hansa:
würde ich mal durchlesen :

http://www.delphipraxis.net/internal...ansaktion+zeos

Zeos lässt sich vielleicht mit FB 1.0 einsetzen, aber der Rest seit 2003/4 ?? fehlt so ziemlich.
Ich denke mal, da hast Du den von Dir empfohlenen Thread nicht aufmerksam durchgelesen.
ZEOS und Firebird 1.5 und 2.x funktionieren sehr wohl gut miteinander.
Evtl. muss man die neueste Entwickler-Version benutzen, aber es geht.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: Transaktionsfrage

  Alt 30. Jan 2008, 09:47
Nene, da braucht man eigentlich nur den Anfang zu lesen. Meine Bedenken gehen allerdings in der Tat noch etwas weiter als hier, insbesondere bezügl. MultiDB usw. IMHO ist es unmöglich mehrere Datenbanken gleich gut zu unterstützen, weil die eben nicht gleich sind. Sogar bei (Interbase) Delphi-IBX fehlen mittlerweile etliche Firebird Dinge. Es ging zwar auch mehr allgemein um Zeos, aber es wurde festgestellt, dass dort nur eine Transaction pro Connection möglich ist.

Jetzt lese ich das :

Zitat von haentschman:
da beide Transaktionen zwangsläufig in einander verschachtelt sind,...
Er hat sogar die Effekte genau so geschildert, wie bei Zeos zu erwarten war.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz