![]() |
AW: InterBase: lock conflict on no wait transaction violation of FOREIGN KEY constrai
Zitat:
Natürlich könnte in der selben Transaktion, die das Update im Master vornimmt, auch ein DELETE des Master-Satzes stattfinden und nach dem COMMIT der Satz für andere Transaktionen unsichtbar werden. Beim Isolationslevel READ COMITTED würde ich aber annehmen, dass erst nach dem COMMIT der Änderungen auf dem Master der Client diese sieht. Also sollte bis zum COMMIT des Masters der Client in der Lage sein ein INSERT auszuführen, da aus seiner Sicht der Master existiert. Aber immerhin ist nun klar, wie es von InterBase 7 gehandhabt wird. Der einzige Workaround (ausser dem etwas wackligen "so lange versuchen, bis das INSERT klappt") den ich ausprobieren könnte wäre der Verzicht auf die Foreign Key Constraint in der Detailtabelle. Mich wundert nur, dass dieses Problem nicht öfter beobachtet wird. Vielleicht gibt es zu wenige InterBase Datenbanken, in denen mit Foreign Key Constraint gearbeitet wird. Oder neuere Versionen arbeiten etwas schmerzfreier. |
AW: InterBase: lock conflict on no wait transaction violation of FOREIGN KEY constrai
Zitat:
Ich vermute, dass Constraints relativ wenig genutzt werden, spätestens wegen Problemen wie diesem (oder weil der Entwickler sich noch an sowas erinnert, auch wenn es ein anderes / älteres System war). Hinzu kommt, dass eine fachliche Komponente mitschwingt. Wenn die Software irgendwelche Sachbearbeitung macht und das hängt an einer Vertragsnummer oder Rechnungsnummer oder so, ist ein Konflikt relativ unwahrscheinlich. Geht es um Produkt oder Bestelldaten, und es wird bspw. die items on stock property häufig geändert, dürften viel mehr solche Fälle auftreten. Ein filigranerer Sperrmechnismus würde auch helfen. Vielleicht geht es ja bei neueren Versionen. |
AW: InterBase: lock conflict on no wait transaction violation of FOREIGN KEY constrai
Zitat:
|
AW: InterBase: lock conflict on no wait transaction violation of FOREIGN KEY constrai
Zitat:
Oder hast Du das bei den Querchecks von vorhin erst gar nicht "nachgeahmt"? Die Prüfung ist ja doppeltgemoppelt, der FK Constraint soll das ja abfackeln. Besser wäre hier wahrscheinlich, es knallen zu lassen bzw. die database exception zu fangen und zu behandeln (wie auch immer) |
AW: InterBase: lock conflict on no wait transaction violation of FOREIGN KEY constrai
Zitat:
Vielen Dank für die Anregungen und Tips! |
AW: InterBase: lock conflict on no wait transaction violation of FOREIGN KEY constrai
Clientseitig ist mir eingefallen, habe ich mal etwas in einem ähnlichen Zusammenhang implementiert, um ähnliche Probleme zu verhindern. Eine Monstermaske mit Master und mehreren Detaildatasets.
Man konnte anfangs einen neuen Mastersatz ungeposted stehen lassen und Details eintragen, bis zum post natürlich, der ging nicht, weil der Masterkey nicht da sein konnte. Ich habe dann schließlich so umgebaut, dass bei Verlassen (GUI) des Mastersatzes nachgefragt wurde, ob man nicht posten möchte. "Verlassen" kann dabei unterschiedlich komplex sein. Hilft natürlich nichts, wenn Dein Problem auf unterschiedlichen System basiert. Aber wenn es so ist wie es ist, spricht m.E. auch nichts dagegen, beim Posten (Fehlschlag) eine entsprechende Meldung auszugeben: "Der .. hat es seit 2h noch nicht geschafft, auf "Commit" zu drücken und blockiert alles, sie finden ihn in Büro xy 2.Etage.. ." ;) Naja so ähnlich |
AW: InterBase: lock conflict on no wait transaction violation of FOREIGN KEY constrai
Hallo,
Zitat:
Zitat:
Das obige Verhalten hatte ich seit FB1.5 nicht mehr beobachtet. Allerdings sind bei uns die Mastertabellen immer weit früher gefüllt als die Detailtabellen, und alles schick mit expliziten Transaktionen gekapselt. Ein Detail-Datensatz kann per Design bei uns nicht angelegt werden, bis der Master seine Transaktion abgeschlossen hat. Danach wird auf jeden Fall eine neue (Detail-)Transaktion gestartet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 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