![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBConnection und/oder Zeos
Programm 2x offen=falsche Daten
Hallo!
Ich habe hier ein Problem mit meiner Datenbank. Szenario: -2x das selbe Programm welches immer die eigenen Daten von der Datenbank holt (selbe Tabellen) -Beide sind Connectet -Das eine Programm schreibt ein INSERT (z.B.) -Beide Aktualisieren (SELECT) -Bei dem von dem das INSERT ausgeht wird alles richtig angezeigt (also der Datensatz ist da) -Bei dem anderen wird trotz SELECT der Datensatz nicht Angezeigt Ich muss mich neu zur Datenbank Connecten damit der auch dort richtig angezeigt wird. Was mache ich da falsch/ wie mach ich es richtig? Das Problem tritt bei den Zeos-Komponenten genau so auf wie bei der IBConnection Gruß Teekeks |
Re: Programm 2x offen=falsche Daten
Die beiden Verbindungen laufen ja in verschiedenen Transaktionen. Vermutlich wir nach dem Insert kein Commit ausgeführt.
|
Re: Programm 2x offen=falsche Daten
Doch doch, es wird ein Insert ausgeführt.
Die Daten landen ja auch in der Datenbank... |
Re: Programm 2x offen=falsche Daten
Der Insert vielleicht schon, wird aber auch die Tranaktion abgeschlossen (commit)? Vorher sind die Änderungen nur in der selben Transaktion oder bei dirty-read sichtbar.
|
Re: Programm 2x offen=falsche Daten
Zitat:
Es muß immer ein Commit oder wenigstens ein CommitRetaining(führt auf Dauer zu Problemen) ausgeführt werden, damit andere Transaktionen die geänderten Daten sehen können. alex |
Re: Programm 2x offen=falsche Daten
es wird ja auch ein commit hinterher geschickt...
|
Re: Programm 2x offen=falsche Daten
Guten Abend... :hi:
ich denke das Stichwort heißt Transaktion Level. Stelle mal TransactionIsolationLevel auf tiReadCommitted statt auf tiNone dann werden alle Transaktionen welche commited sind für "andere" sichtbar. |
Re: Programm 2x offen=falsche Daten
Zitat:
|
Re: Programm 2x offen=falsche Daten
Guck mal in den Datenbakeinstellungen. Zumindest ich würde es da suchen.
|
Re: Programm 2x offen=falsche Daten
Hallo,
Zitat:
Das Problem ist, dass Programm 2 (Select) erst eine neue Transaktion starten muss, bevor es die Daten von Programm1 (nach dessen Commit) sehen kann. Prog 1 Prog 2 StartTrans StartTrans Insert Select -> keine Daten Commit Select -> keine Daten Commit Select -> Daten sind sichtbar Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 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-2025 by Thomas Breitkreuz