AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firbird Generator und Transaction
Thema durchsuchen
Ansicht
Themen-Optionen

Firbird Generator und Transaction

Ein Thema von tkhandel · begonnen am 19. Mär 2025 · letzter Beitrag vom 19. Mär 2025
Antwort Antwort
tkhandel

Registriert seit: 2. Jan 2022
Ort: Arnsberg im Sauerland
99 Beiträge
 
Delphi 10.4 Sydney
 
#1

Firbird Generator und Transaction

  Alt Heute, 12:11
Datenbank: Firbird • Version: 5 • Zugriff über: FD
Hallo,

ich starte bei einer Belegerfassung eine Transaction (FDConnection.StartTransaction) für mehrere Tabellenoperationen.
Nach einem rollback wird die Belegerfassung abgebrochen und die Belegkopfdaten und Belegpositionsdaten werden auch erfolgreich
verworfen.
Der Generator allerdings wird nicht wieder zurück gesetzt so das mir bei einem Abbruch immer eine Belegnr verloren geht was ja nicht sein darf.
Kann ich irgendwo verfolgen woran das liegen könnte?
Jürgen
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
617 Beiträge
 
Delphi XE6 Enterprise
 
#2

AW: Firbird Generator und Transaction

  Alt Heute, 12:23
Die Generatoren laufen immer außerhalb der Transaktionssteuerung. Das ist auch so dokumentiert.

P.S.: Generatoren sind gedacht für künstliche Keys. Für eine Belegnummer würde ich einen anderen Mechanismus nutzen, z.B. eine eigene Tabelle.
  Mit Zitat antworten Zitat
tkhandel

Registriert seit: 2. Jan 2022
Ort: Arnsberg im Sauerland
99 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Firbird Generator und Transaction

  Alt Heute, 12:35
Hallo,

Danke für die schnelle Rückmeldung. Das hatte ich vorher so und ich dachte es wäre eine gute Idee das gleich in den Trigger einzubauen.
Also nehme ich wieder meine alte function.
Jürgen
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
689 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Firbird Generator und Transaction

  Alt Heute, 14:49
Hallo,

Danke für die schnelle Rückmeldung. Das hatte ich vorher so und ich dachte es wäre eine gute Idee das gleich in den Trigger einzubauen.
Also nehme ich wieder meine alte function.
bedenke bei deiner eigenen Funktion das ggf 2 transaktionen nahezu gleichzeitig eine nummer brauchen könnten und wenn du
dann den wert einer tabelle ausliest, diesen per update um 1 erhöht zurüschreiben willst, kann es je nach anzahl der user im
Netz dazu führen, das es ein deadlock gibt. auch einfach max ermitteln und eins höher zurückschreiben ist im netztwerk betrieb
sehr anfällig und dazu noch wird das erst beim kunden selbst im praxiseinsatz irgendwann mal passieren.

reale geschichte aus der vergangenheit: schlecht implementierte software beim kunden lief geichzeitig von 2 clients je einen
lieferschein an und aufgrund eines fehler ähnlich wie da oben haben die am ende zwar 2 lieferschein köpfe in den tabellen,
dummerweise waren aber auf einem davon gar keine positionen, auf dem anderen jedoch alle inkl welche die nix mit dem endkunden
zu tun hatten. Das fiel erst abends auf als ein Mitarbeiter der Kommissionierung mit dem leeren lieferschein zur IT kam und fragt
was das wohl sollte. Die datenprüfung zeigte, das ein LKW mit dem LS unterwegs war, der schon sachen abgeladen hatte, die bei dem
Endkunden nix zu suchen hatten.

Das passierte das erste mal nachdem die software schon ca ein jahr im Einsatz war. Ich war consultant bei denen für eine andere
software, hatte das dann aber mit denen zusammen schnell analysiert und die ursachen lokalisiert.

denk am besten immer an worst case, dann wirst du nicht negativ überrascht

in Firebird ist das per Generator einfach lösbar aber nur als eindeutige werte, lückenlos muss man anders machen, geht aber eigentlich
auch einfach.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung

Geändert von IBExpert (Heute um 14:52 Uhr)
  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 20:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz