AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Select zu Schnell für Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Select zu Schnell für Datenbank

Ein Thema von grenzgaenger · begonnen am 8. Sep 2007 · letzter Beitrag vom 9. Sep 2007
Antwort Antwort
grenzgaenger
(Gast)

n/a Beiträge
 
#1

Select zu Schnell für Datenbank

  Alt 8. Sep 2007, 23:10
Datenbank: z. B. Access • Zugriff über: ADO/ODBC
hallo Leuts,

hab mal ein problem mit der datenbank...

1. frag ich ab, ob ein satz mit dem primärschlüssel bereits in der db vorhanden ist select ... from tabelle where PrimaryKey = ... falls er etwas zurückliefert, kommt ein update statement, andernfalls ein insert.

das klappt auch ganz gut, wenn ein normaler dialog ist...

ich sammle allerdings die daten um sie anschliessend im batch zu verbuchen.

da kann es vorkommen, dass mehrere sätze zu einem primärschlüssel vorkommen... beim ersten mal macht er das auch noch richtig... wenn dann ein weiterer satz kommt, liesst er wohl ins leere und bringt irrtümlich die meldung, dass noch kein datensatz vorhanden ist, wenn dann der insert kommt, bringt er die meldung, dass bereits ein datensatz vorhanden ist...

gibt es da eine möglichkeit, die verbuchung resp. das lesen zu beschleunigen ... oder die verbuchung zu verlangsamen, so dass die datenbank mit dem fortschreiben nachkommt?


dank für euere hilf
gg
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Select zu Schnell für Datenbank

  Alt 9. Sep 2007, 08:29
Hallo grenzgaenger,

nutz doch einfach das "INSERT ... ON DUPLICATE KEY UPDATE"-Statement (siehe hier).
Gruß

Jan
Jan
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#3

Re: Select zu Schnell für Datenbank

  Alt 9. Sep 2007, 08:34
dank dir Mr. G, das wäre ein netter befehl welcher das problem lösen würd... doch leider gehört er nicht zum standard sprachumfang von SQL und mein datenbanktreiber unterstützt ihn auch nicht...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Select zu Schnell für Datenbank

  Alt 9. Sep 2007, 08:54
Hallo,

Zitat von grenzgaenger:
...ich sammle allerdings die daten um sie anschliessend im batch zu verbuchen.
packe doch das Übel bei der Wurzel: Kannst du die gesammelten Daten nicht konsolidieren, bevor du sie verarbeitest?

Ansonsten würde ich das Problem mal isolieren und in Richtung Transaktionsverarbeitung recherchieren.

Grüße vom marabu
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#5

Re: Select zu Schnell für Datenbank

  Alt 9. Sep 2007, 13:03
aktuell hab ich es so gelöst, dass ich die eingaben gleich abspeichere... funktioniert

an das thema mit den konsolidieren hab ich auch schon gedacht... dachte aber, dass ich das der DB überlassen kann

den isolation level hab ich bereits auf dirty read gesetzt, brachte aber nix...

nehme an, dass das problem liegt, dass die verbuchung von einem anderen thread aus läuft... so dass mein progy, meint, die verbuchung ist bereits abgeschlossen, während die DB noch dabei ist... die daten fortzuschreiben...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Select zu Schnell für Datenbank

  Alt 9. Sep 2007, 14:32
Zitat von grenzgaenger:
... nehme an, dass das problem liegt, dass die verbuchung von einem anderen thread aus läuft ...
Unter diesen Umständen würde ich eine CriticalSection einsetzen.
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#7

Re: Select zu Schnell für Datenbank

  Alt 9. Sep 2007, 19:24
ich glaub, da hast mich falsch verstanden...

die schnittstelle/der datenbanktreiber... ist der andere thread. mein progy, hat nur einen einzigen thread

die frage ist nur, wie man warten kann, bis der datenbanktreiber die daten auch in die datenbnank geschrieben hat, so dass man nachsehen kann, was schon drinne ist..

grüss und noch einen schönen sonntag
gg
  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 16:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz