![]() |
AW: Firebird 2.5 Generator falsch - Trigger FireDAC
Hallo, danke für die Antwort, es gibt aber wirklich zu 100 % keine Stelle im Hauptprogramm und auch kein weiteres Programm welches abgesehen von den Triggern auf den Generator zugreift oder Werte in die Tabelle schreibt, ich hab sicherheitshalber noch einmal den ganzen Sourcecode geprüft. Es ist wirklich ausschließlich der Trigger - nach einem Backup und Restore läuft es auch wieder, allerdings tritt das Problem immer wieder und an verschiedenen stellen ( wie am Anfang erwähnt auf mit anderen Generatoren ) auf :( es ist zum Mäuse melken
|
AW: Firebird 2.5 Generator falsch - Trigger FireDAC
Hallo,
wie Lemmy geschrieben hatte, musst Du bei RollBacks aufpassen. Meines Wissens laufen die Generatoren ausserhalb der Rollbacks. siehe auch hier: ![]() Komisch ist, dass er auf einem alten Wert steht. Laut dem Generatorguide hätte ich eher Lücken in der Sequenz erwartet. Zitat:
Du hattest geschrieben, dass du nichts vergleichbares gefunden hattest. Vielleicht ja so was ? ![]() Wie viele Insert-Statements in die Archiv-Tabelle hast Du in deinem Code? |
AW: Firebird 2.5 Generator falsch - Trigger FireDAC
Verstehe ich das jetzt richtig:
Der Generator gibt bei Abfrage z. B. den Wert 100 aus, obwohl er eigentlich schon bei 105 sein sollte. Nun machst Du ein Backup und ein Restore und fragst dann den Generator erneut ab und er enthält dann den erwarteten Wert von 105? Das sieht dann aber eher nach einem Datenbankproblem aus. Gibt es da irgendwo einen Bug? Wie hoika schreibt, darf bei der Vergabe der ID eine Lücke entstehen, wenn ein Rollback gemacht wird, aber das ein Generator auf einem alten, bereits vergebenen, Wert steht, widerspricht der Spezifikation. |
AW: Firebird 2.5 Generator falsch - Trigger FireDAC
Sorry ich schreib das hier nebenher...
nochmal ausführlich vielleicht: Es gibt keinen Insert auf die Archiv Tabelle im Code - Ausschließlich über den Trigger auf der Tabelle selbst. Für eine unvorhersehbare Zeit funktioniert alles prima, plötzlich steht der Generator auf einem alten Wert. Übersprungene Werte habe ich noch nicht gesehen, sind aber auch kein Problem. Wenn ich den Generatorwert nun händisch korrigiere funktioniert es 1 mal, danach ist der Wert wieder falsch. -- Bei anderen Fällen ging es dann aber auch wieder für längere Zeit Wenn ich vor oder nach der Korrektur ein Backup Restore durchführe tritt der Fehler nicht mehr auf ( zumindest für eine gewisse Zeit ) Der Generator wird Ausschließlich im Trigger angesprochen Das selbe tritt auch bei anderen Tabellen auf, welche nur zum Teil durch den Trigger mit der ID versehen werden, ab und an wird der Generator auch direkt angesprochen ( daher die Abfrage auf ID is null) Das ganze passiert in einigen Kopien der Datenbank, aber nicht in allen. Es passiert zu unterschiedlichen Aktionen Zeiten und bei unterschiedlichen Generatoren - ich konnte bisher noch keine Gemeinsamkeit entdecken. Es gibt für den aktuellen Fall kein Element abgesehen von den Triggern welches auf Generator oder Tabelle Archiv zugreift Danke nochmal für eure Mühen |
AW: Firebird 2.5 Generator falsch - Trigger FireDAC
Zitat:
|
AW: Firebird 2.5 Generator falsch - Trigger FireDAC
Hallo,
vielleicht wird ja in einem Trigger, der nicht so häufig verwendet wird, der falsche Generatorwert drin. Exportiere mal deine DB (IBExpert, ExtractMetaData) und suche dort nach Deinem Generatorwert. Was hat Deine DB für eine Endung, FDB oder GDB (Stichwort Schattenkopien)? |
AW: Firebird 2.5 Generator falsch - Trigger FireDAC
ok, danke! werde ich versuchen!
|
AW: Firebird 2.5 Generator falsch - Trigger FireDAC
Zitat:
|
AW: Firebird 2.5 Generator falsch - Trigger FireDAC
Zitat:
Sind die zitierten Aussagen oben nicht widersprüchlich? Und, es ist vollkommen wurscht, ob der Generator nebenher angesprochen wird. Entscheidend ist, woher die Werte kommen, die in der Tabelle landen. Oder anders: Du kannst dem Generator soviel Werte aus dem Kreuz leiern, wie Du magst. Und mit denen kannst Du machen, was Du willst. Wichtig ist nur, dass in einer Tabelle die ID aus genau einem Generator kommt und in Deinem Fall sicherheitshalber bedingungslos, also ohne irgendwelche Prüfungen. Es ist nicht ungewöhnlich, einen Generator als unique Quelle für mehrere oder auch viele Tabellen zu verwenden. Es gibt sogar Dinge, die dafür sprechen. Das gilt unabhängig von Deinem spezifischen Problem hier, die Reparatur bzw. Prüfung der DB Konsistenz würde ich als erstes machen und vor allem versuchen die Ursache zu finden. |
AW: Firebird 2.5 Generator falsch - Trigger FireDAC
wie überprüfst Du, daß der wert des Generators korrekt ist?
Wenn Du schreibst: Zitat:
Ggf. wäre es günstig uns mal die Statements zu zeigen bei denen der Fehler auftritt. Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 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