Alice - Fr 13.12.13 09:31
Titel: DB Update statment schlägt manchmal Fehl
Hallo,
in einer Funktion die ein update per SQL zur db (postgres) schreibt,
gibt es Probleme. Meistens funktioniert sie, manchmal jedoch nicht,
ich glaube zu erkennen das es meistens dann nicht Funktioniert, wenn die DB unter Last
steht. Am update Befehl selbst kann es nicht liegen, da es ja in einer Isolierten Testumgebung
einwandfrei Funktioniert.
Das SQL Statement sieht aus wie folgt:
SQL-Anweisung
1: 2: 3: 4: 5: 6: 7:
| Update "Tabname" Set "Feld12" = 'gfgfdg', "Feld13" = '111gfdgdf11', "Feld14" = 'gfdgdf', "Feld15" = '111vcv11', "Feld16" = 'fgsgrgtr' where "ID" = '999999' |
Das ganze schicke ich dann per execsql zu DB.
Es ist eine Applikation mit mehreren Usern die zugriff auf "Tabname" haben,
das Feld ID hat einen Index 'BTree' .
Wie kann ich dieses Problem am elegantesten lösen?
thx
Alice
Moderiert von
Martok: SQL-Tags hinzugefügt
Quitzlinga - Sa 14.12.13 09:18
Hi,
Zitat: |
Meistens funktioniert sie, manchmal jedoch nicht,
ich glaube zu erkennen das es meistens dann nicht Funktioniert, wenn die DB unter Last
steht. |
anhand der Beschreibung würde ich auf gleichzeitige Zugriffe beim selben Datensatz tippen. Da in einer Testumgebung im allgemeinen weniger Leute arbeiten, tritt da das Problem halt seltener oder überhaupt nicht auf. Was für eine Fehlermeldung wird denn bei einem Fehlschlag ausgegeben ?
MfG
Quitzlinga
Quitzlinga - Di 17.12.13 16:30
Hi,
Zitat: |
die einzelnen Datensätze werden gesperrt beim update |
gesperrt durch die DB oder eine eigene Sperroutine, die Serialisierbarkeit der Statements sicherstellt ? Wenn durch die DB gesperrt wird (normales Lock auf Satzbasis) kann ja trotzdem noch das Update-Statement losgeschickt werden, bloss schlägt es dann fehl.
Ansonsten : - evt. zuviele Verbindungen
- zu hohe Wartezeit.
Besteht die Möglichkeit, die Fehlermeldung per Try/Except Block und ShowMessage auszugeben oder in eine Log-Datei zu schreiben ?
MfG
Quitzlinga